>  기사  >  시스템 튜토리얼  >  한 번만 기록하고 strace를 사용하여 PHP가 너무 많은 시스템 리소스를 차지하는 문제를 진단하세요.

한 번만 기록하고 strace를 사용하여 PHP가 너무 많은 시스템 리소스를 차지하는 문제를 진단하세요.

WBOY
WBOY앞으로
2024-05-03 16:31:14914검색

로컬 환경: redhat6.7 시스템. nginx1.12.1, php7.1.0, 코드는 yii2 프레임워크를 사용합니다

질문: 로컬 웹사이트는 Elasticsearch 서비스를 사용해야 합니다. PHP가 로컬 서버에 구축된 Elasticsearch를 사용하는 경우 로컬 로드는 정상입니다. AWS의 Elasticsearch 서비스를 사용할 때 로컬 서버의 부하가 너무 높은 경우가 많습니다. nginx 및 php 로그를 확인하고 예외가 없는지 확인하세요. 시스템의 동시 연결 수도 높지 않습니다. 이때 우리 상사가 알려준 추적 진단 도구가 생각났다.

디버깅 프로세스:

  • PHP 하위 프로세스 ID 찾기
  • strace -cp pid는 프로세스 호출을 추적합니다

당시 시스템 부하:

한 번만 기록하고 strace를 사용하여 PHP가 너무 많은 시스템 리소스를 차지하는 문제를 진단하세요.

추적 디버깅 프로세스

한 번만 기록하고 strace를 사용하여 PHP가 너무 많은 시스템 리소스를 차지하는 문제를 진단하세요.

여기서 우리는 PHP가 elasticsearch를 호출할 때 로컬에서 파일을 찾지만 이 파일은 존재하지 않는다는 것을 발견했습니다. 이로 인해 서버 부하가 높아집니다. aws elasticsearch와 local es 클러스터의 차이점을 비교합니다. 호출 방법만 다르다는 것을 알았습니다. 코드는 https 메서드를 사용하여 호출되므로 로컬에서 인증서 라이브러리 파일을 찾습니다. 바로 개발팀에 연락해서 호출 방식을 http로 변경했습니다. 한동안 관찰해보니 서버 부하가 정상으로 돌아왔습니다.

으아아아

한 번만 기록하고 strace를 사용하여 PHP가 너무 많은 시스템 리소스를 차지하는 문제를 진단하세요.

위 내용은 한 번만 기록하고 strace를 사용하여 PHP가 너무 많은 시스템 리소스를 차지하는 문제를 진단하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제