질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS WordPress

안녕하세요.

 

이번에 ubuntu 20.04 + nginx 1.19.8 + mariadb 10.5 + php7.4를 새 서버에 설치했습니다.

 

그리고 트래픽이 적은 정적 웹사이트 몇 개를 돌리고, 얼마 후 mysqltuner를 돌려보았습니다

 

그런데 쓰레드 당 메모리가 60mb가 나오는걸 보았습니다.

 

mysql 설정은 그냥 기초적인 설정 (innodb, 쿼리캐시 등)만 해둔 상태라서 이게 이렇게 높게 나오는게 이상하다고? 생각되는데요..

 

반면 트래픽이 많은 웹사이트가 연결된, 구버전을 사용하는 서버를 확인해보니 쓰레드 당 메모리가 20mb 정도인걸 보았습니다.

 

그런데 당최 왜 이렇게 3배가 차이가 나는 지 모르겠습니다. 그냥 다 밀어버리고 새 서버에 설치만 해서 테스트 해보니 60mb가 나오더군요.

 

mysqltuner의 호환성 문제인가 싶어서 확인해보니, 홈페이지에는 호환이 된다고 나와있습니다.

 

mysqltuner에서 표시되는 게 잘못된건가요??

 

그게 아니면 mysql에서 사용하는 쓰레드 당 메모리가 어떻게 사용되는지를 확인할 수 있는 방법은 없을까요?

 

늘 XETOWN에서 많이 배우고 있습니다. 알려주셔서 정말 감사합니다.

  • profile

    1. 쓰레드당 메모리는 별도의 설정이 있는 것이 아니라 mysqltuner가 임의로 추측하는 것입니다. 여러 설정의 영향을 받지만 가장 밀접하게 관련되어 있는 것은 max_allowed_packet입니다. 큰 패킷을 한번에 처리하려면 메모리가 많이 필요하니까요. 단, 이게 너무 작으면 한꺼번에 많은 데이터를 인서트할 수 없는 등, 여러 가지 불편이 있으므로 작다고 더 좋은 것은 아닙니다.

     

    2. mysqltuner가 추정하는 최대 메모리 사용량은 고정 버퍼 + (쓰레드당 메모리 × 최대 쓰레드 갯수) 인데, 최대 쓰레드 갯수는 max_connections 설정에서 가져옵니다. 이론적인 최대치일 뿐, 현실에서 이만큼 사용하는 일은 절대 없습니다. 쓰레드당 메모리 사용량이 많더라도 max_connections를 합리적인 범위 내에서 유지한다면 문제가 되지 않습니다. 예를 들어 max_connections를 1000개로 해놓아도 PHP-FPM에서 생성할 수 있는 프로세스 갯수가 최대 20개라면 수십 개 이상의 연결이 동시에 일어날 확률은 극히 낮습니다. (프로세스 갯수와 정확하게 일치하지 않는 이유는 XE나 워드프레스 등에서 제공하는 쿼리 함수를 쓰기 귀찮다는 이유로 별도의 DB 연결을 생성하는 예의없는 서드파티 자료들이 가끔 있기 때문...)

     

    3. mysqltuner는 고대 유물입니다. 최신 버전의 MySQL이나 MariaDB를 사용할 때는 거의 신경쓰지 않아도 되는 오래된 설정들을 아주 열심히 튜닝하려고 하는 습성이 있으니, 참고는 하시되 너무 큰 의미를 부여하지는 마시기 바랍니다. DB를 어떻게 튜닝해 놓아도 워드프레스는 그냥 느립니다.

  • profile ?
    안녕하세요 기진곰님.

    그렇군요. 이미 고대의 유물이군요 ;

    늘 테스트 한 후 최대 동접자를 기준으로 조금 더 높게 max_connections를 설정하고, 종종 php-fpm 로그를 보고 pm.max_children 등의 설정만 바꿔주고 있었습니다.

    최근데 tuning-primer를 알게되면서 mysqltuner 도 이리저리 돌려보고 있었는데요.. 둘 다 고대 유물이군요 ;;

    뭔가 제안하는 수치를 적용하면 속도 향상에 효과가 있을 줄 알았는데 그냥 가끔씩 한번 확인하는게 좋겠네요..

    개발자도 아니고, 워드프레스 사이트는 느리고, 제 사이트 기준에서 고사양의 서버가 필요도 없어서

    기존 서버를 더 최적화 시켜보자는 마음을 가지고 있었습니다만, 그냥 놓아두어야 겠습니다 ;;

    도와주셔서 감사합니다!