다음과 같은 상황이 발생했습니다.
우리는 nginx + php-fpm을 사용하여 8 코어, 8GB 램, 2.6GHz의 linode에 있습니다. 우리는 CPU 사용량에 대한 그래프를 매우 많이 얻고 있습니다 (우리는 그렇게 나쁜 VPS 이웃이되고 싶지 않습니다) ...
한 번에 사이트에 약 100 명 미만의 사용자가 있습니다. 따라서 이러한 상황은 매우 당황 스럽습니다. CPU 사용량이 매우 높다는 것입니다.
우리는 캐싱에 대한 문서가 많이 있습니다 (플러그인뿐만 아니라 워드 프레스 또는 드루팔과 같은 잘 알려져 있고 잘 문서화되어 있으며 잘 만들어진 다른 프레임 워크 대신 잘 알려지지 않았을 수도 있고 CPU를 많이 사용하는 PHP 방식의 의심스럽고 끔찍한 프레임 워크를 사용하고 있습니다. nginx + php_fpm 플랫폼에서 php를 캐싱 처리합니다.
따라서 우리는 약 6 개의 오픈 php-fpm 프로세스를 가지고 있는데, RUNNING 할 때 개별적으로 대량 (30 +, 종종 99 % 정도)의 CPU를 소비합니다. 그리고 나는 너무 많은 CPU를 사용하지 못하게하는 방법을 조금도 생각하지 않았습니다. . 나는 항상 어떤 일이 일어나고 있기 때문에 어떤 스파이크가 이러한 스파이크를 일으키는 지 알 수 없습니다 ... 일반적으로 1 또는 2 만 실행 중입니다.
내 pool.d / www.conf 파일의 설정은 다음과 같습니다.
pm = dynamic pm.max_children = 10 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6
우리는 이것을 해석하는 방식으로 메모리가 실제로 놀랍고 (472 / 7000 + mb 사용, 스왑 없음 등을 표시하지 않음) 더 많은 프로세스를 처리하고 줄을 세분화 할 수 있기 때문에이 설정을 수행했습니다. 처리됨-그러나 불행히도 각 프로세스가 실행될 때 CPU에서 너무 강렬하므로 지붕을 통해 CPU를 구동하므로 충분한 프로세스를 처리 할 수 없습니다.
문제 -php-fpm에 대한 해당 풀 conf 파일의 설정을 증가시킬 수 있도록 프로세스 php-fpm CPU 사용량 을 줄이기 위해 지구상에서 무엇 을 할 수 있습니까 ? 그리고 /var/log/php5-fpm.log 자녀를 늘리고 최소 / 최대 / 시작 서버를 조정 / 증가 시키려고 소리를 지르고 있습니다. 그러나 그렇게하면 앞에서 언급 한 것처럼 우리의 평균 부하가 미치게됩니다. 캐시를 사용하지 않고 어떻게 할 수 있습니까? 아니면 옵션은 무엇입니까?
내 생각? 프로세스가 할당 된 양보다 많은 CPU를 사용하지 않도록 cpulimit 사용에 대한 내용을 읽었지만 그 속도가 느려서 사용할 수 없게됩니까? 또는 그 과정에서 몇 가지 이상의 프로세스를 실행할 수있는 능력을 향상시킬 수 있습니다. 또한 두 개의 풀을 실행하는 것도 생각했습니다. 하나는 전방 웹 사이트 (고객이 경험하는 것)와 다른 하나는 백엔드 (시간이되면 전방 사이트에 영향을 미침)를위한 것입니다. 소비 보고서가 실행되고 있습니다).
나는이 주제에 대해 연구, 인터넷 검색 등을 며칠 동안 보냈습니다. 모든 사람의 상황이 자신의 시스템에 매우 독특하기 때문에 어렵습니다. 문제는 특정 전례가 없거나 잘못 작성된 프레임 워크에 있습니다. 해결책을 찾기가 어렵습니다. 우리는이 프레임 워크를 아직 긁을 수는 없습니다. 나는 일종의 해결책을 찾아야합니다.
업데이트 : PHP 세션을 저장하기 위해 memcache를 구현했습니다. 프레임 워크는 사용자 세션에 크게 의존하고 시스템의 특성은 직원이 한 번에 여러 탭을 자주 사용하기 때문에 각 세션을 다시 확인하여 능력 / 사용자 데이터 등을 확인합니다. ... 그래서 나는 이것에서 약간의 성능 향상을 기대하고 있습니다-원한다면 의견에 오신 것을 환영합니다-우리가 더 많은 양의 피크 시간을 겪을 때 내일 어떻게 진행되는지 볼 것입니다.