MySQL 또는 Apache로 인한 메모리 사용량?

MySQL 또는 Apache로 인한 메모리 사용량?

내 vps 메모리 사용량
(원천:fileden.com)

다음은 코어 외에 최대 14개의 모듈이 추가되고 활동이나 사용자가 없는 미완성 cms drupal 사이트에서 제가 오늘 작업하고 있는 작업에 대한 스크린샷입니다.

보시다시피, 제 한계에 도달했습니다. 정말 말도 안 되는 일입니다. 따라서 VPS가 최소이고 현재 요구 사항에 적합해야 하기 때문에 Apache, mysql 및 php의 메모리 사용량을 제한해야 합니다.

내 시스템 파일 my.cnf에는 다른 곳에서 본 매개변수 목록이 없지만 이 파일은 분명히 메모리 사용량을 줄여줄 것이며 메모리 누수 및 Apache MPM Workers와 Apache Prefork에 대해 읽은 다른 내용도 있습니다. 나를 위한 케이스 소유.

그렇다면 Apache나 php5를 제거하지 않고 메모리 사용량을 크게 줄일 수 있는 방법은 무엇일까요?

저는 mysql 버전 5.1.66을 사용하고 있습니다. innodb처럼 보이고 yabbit.net/mysql.txt 변수가 표시됩니다.

답변1

MySQL 구성이 아니라 Apache 구성이 원인인 것 같습니다. 현재 MySQL 설정은 전체 크기가 50MB를 넘지 않아야 합니다(보통 더 낮은 것 같습니다).

그러나 댓글에 게시한 Apache 구성과 VPS가 256MB의 RAM만 제공한다는 사실을 통해 다음 설정을 발견했습니다.

MaxClients       256

Prefork MPM의 경우방법이런 기계에는 너무 많습니다. 내 Debian Squeeze 웹서버에서는 포크당 약 20MB의 사용량이 표시되므로 약 15개의 연결이 시스템의 모든 메모리를 사용했습니다. 너무 많은 동시 연결을 확보하여 프로세스가 중단되거나 많은 스왑 공간을 사용하는 것은 어렵지 않습니다. 결과: 서버가 제대로 작동하지 않거나 서비스 응답이 느려집니다.

나는 너에게 제안한다:

  • 예를 들어, 프리포크 구성을 대폭 축소합니다.

    <IfModule mpm_prefork_module>
        StartServers         10
        MinSpareServers      5
        MaxSpareServers      15
        MaxClients           15
        MaxRequestsPerChild  2000
    </IfModule>
    

    동시에 8명 이상의 방문자에게 서비스를 제공할 수 없다는 사실을 받아들이십시오(일반적으로 브라우저당 2개의 클라이언트 연결). 이는 선택한 LAMP 구성과 결합된 메모리 양의 제한 사항입니다.

  • PHP-FPM으로 마이그레이션하고, 작은 풀을 설정하고, 작동하는 MPM이나 심지어 다른 웹 서버(예: nginx)로 마이그레이션하세요. 작업자 MPM은 메모리를 공유하지 않는 포크 대신 공유 메모리 스레드를 사용합니다. 이를 통해 더 많은 동시 방문자를 처리할 수 있습니다.

관련 정보