2018-01-24 13:22:26 1888 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5120)

2018-01-24 13:22:26 1888 [Warning] Buffered warning: Changed limits: max_connections: 214 (requested 1024)

2018-01-24 13:22:26 1888 [Warning] Buffered warning: Changed limits: table_open_cache: 400 (requested 2000)
 

 

이런식의 로그가 남아 있네요..

 

대충 영어 봐서는 저렇게 바꿔라 뭐 이런뜻 같은데...

 

 

설정을 직접 확인해보면...

 

max_open_files: 1024 되어 있는거 맞구요.

table_open_cache: 400  400되어 있었습니다.

 

특별히 my.cnf에 적지를 않은거 같네요. 기본값인가 봅니다.

 

근데..

 

key_buffer_size     = 128M
max_allowed_packet  = 16M
max_connections     = 1024
max_heap_table_size = 64M
tmp_table_size      = 64M

 

이렇게 my.cnf에 max_connections = 1024라고 해놨는데..

 

myql에서 직접 확인하면 

 

max_connections: 214 되어 있네요..

 

우찌 이런일이...

 

뭘 확인해 봐야 될까요?

  • profile
    1024로 바뀌어 있다. 5120이 요청되어졌다. 이런 뜻 아닌가요?
  • profile ?

    글 내용을 잠깐 수정하였습니다. 그전에 답변을 다신것 같은데..
    설정을 확인해 봤는데.. 앞에 적히 숫자
    max_open_files: 1024
    max_connections: 214
    table_open_cache: 400
    이렇게 설정되어 있습니다.

    2개는 기본값 쓴거 같은데..

    실제로
    my.cnf에 max_connections = 1024라고 해놨는데

    값을확인하면
    +-----------------+-------+
    | Variable_name | Value |
    +-----------------+-------+
    | max_connections | 214 |
    +-----------------+-------+

    이렇게 되어 있습니다.

  • ? profile
    저는 저 영문이 그냥 이렇게 읽혀집니다.
    214로 세팅되어있다. 그런데 1024의 요청이 있었다.
  • profile ?
    다시 웹지기님 글을 잘 읽으니깐...

    제가 요청하기는 5120개를 요청했는데... 너무 커서.. 실제로는 1024개로 바뀌어졌다.. 이런뜻이라는 건가요?
  • profile ?
    여기서 요청이라는게.. 제가 셋팅을 1024개 요청했다. 근데 214개 해놨다란 뜻이란거죠?

    저는 214개로 셋팅되어져 있는데 실제 서버는 최대 1024개까지 요청을 받은적이 있으니 늘려라. 이런뜻으로 받아 들였다는 거죠. ㅎㅎㅎ
  • ? profile
    저는 서버나 mysql을 모르는 사람이라 그냥 저게 그렇게 보인다는 뜻이구요.
    검색을 해보시면 아마 관련 문제가 나오는 거 같습니다.
  • profile ?
    웹지기님 말씀이 맞는것 같습니다.
  • ?
    구글은 대단하네요.

    제가 이글 적고 구글에서
    Buffered warning: Changed limits: max_open_files: 1024 (requested 5120)

    이렇게 검색은 하니깐.... 지금 제가 적는 이글이 나오네요.. 헐..
  • ?
    제가 결론을 내보면
    requested : 요청한 이란 뜻을 가지고 있는데..
    이게 두가지 뜻으로 저는 해석이 되더라구요.

    1.
    이게 제가 mysql 셋팅으로 요청한것 즉 max_open_files=5120개 셋팅 요청 했는데 실제로는 무리니깐...1024개 해놨다. 이런뜻

    2. 현재 2014개 셋팅 되어져 있는데 실 서버를 쓰다보니 5120개의 서비스 요청이 들어왔다.
    그럼 늘려라.. 뭐 이런뜻...

    저는 mysql에서 친절하게 2번처럼 알려주는줄 알았는데..
    가만생각하니깐.. 저렇게 친절할 리가 없는거 같습니다. 쩝...

    1번.. 웹지기님 의견이 맞으신것 같습니다.

    그래야 제가

    max_connections = 1024 해놨지만

    실제 확인하면

    mysql> show variables like 'max_connections';
    +-----------------+-------+
    | Variable_name | Value |
    +-----------------+-------+
    | max_connections | 214 |
    +-----------------+-------+

    이렇게 나오는게 설명이 되네요... ㅎㅎㅎ
  • ? profile

    1번 해석이 맞습니다. O/S에서 제한을 해놓았는지 다른 곳에서 따로 제한했는지는 기억이 안 납니다만, 사용하시는 서버 사양과 이용패턴으로 볼 때 1024/214/400이 부족한 값은 아닌 것 같습니다.

    원하시면 더 늘릴 수는 있지만, 높다고 무조건 좋은 것은 아닙니다. max 어쩌고 하는 설정들은 해당 프로그램이 사용할 수 있는 서버 자원(커넥션 수, 파일 수, RAM 용량 등)을 제한하는 것인데, 특정 프로그램이 서버 자원을 독식하는 것을 막아서 전체적인 안정성을 높이는 효과도 있거든요.

     

    각종 타임아웃 설정도 마찬가지입니다. 타임아웃 걸린다고 타임아웃을 계속 늘리다 보면 결국 다운됩니다. 제한에 걸리지 않도록 프로그램을 짜야 하는데, 귀찮으니까 제한을 다 풀어버리고 위험하게 노는 분들이 많습니다 ㅋㅋ

  • profile ?

    네 감사합니다.
    지금도 사실 서버 스펙이 따르니깐.
    msyql 동시최대접속수 확인하면 지금 18나오네요..
    그냥 두는게 기진곰님이 그러시니깐.. 그냥 두는게 맞다는 생각이 드네요.

    그럼 오류 로그 안나오게 하려면 저희쪽 설정은
    my.cnf에 max_connections = 214라고만 고치면 되는건가요?

    나머지는 설정이 my.cnf에 안나오던데요..

     

    참고로 

     

    ulimit -a | grep open
    open files                      (-n) 32767
     

    ulimit -n
    32767
     

    이렇게 나옵니다.

  • ? profile
    open files 숫자는 저렇게 세팅해드린 게 맞는 것 같고요, 그래도 제한에 걸린다면 링크하신 페이지에 나오는 것처럼 systemd 쪽의 설정도 조정해야 할 수 있습니다. 아니면 그냥 my.cnf에서 설정을 낮추시고요.

    my.cnf에 안 나오는 설정은 그냥 기본값일 겁니다.
  • profile ?
    네 감사합니다.
    max_connections = 214 라고만 고쳐서 쓰겠습니다.

    나머지 셋팅을 기진곰님께서 평소에 저리 잡으신 이유가 있을꺼라 생각합니다.

    안전하게 가고싶습니다...

    늘리고 싶은 욕망은 제 테스트 서버에서만 해보겠습니다. ㅎㅎㅎ
  • ?
    https://stackoverflow.com/questions/30901041/can-not-increase-max-open-files-for-mysql-max-connections-in-ubuntu-15

    이런 글들이 검색되네요.

    OS쪽의 Open files 수에 영향을 받는것 같은데...

    이걸 바꾸는것도... 망설여 지네요..
    잘 모르면서 바꾸면 더 골치아픈일이 생길까봐요.

    현재 최대접속수는 25내외라서... 214도 충분히 큰 크기인데.
    더 늘려 보고 싶어지는건... 아....!!!