같은 호스트에서 MySQL과의 대화 속도가 느린 PHP


2

Ubuntu 10.04를 실행하는 VPS (OpenVZ)가 있습니다.

  • 니 진스 1.0.5
  • PHP 5.3.5
  • MySQL의 5.1.41

WordPress를 설치하고 Firebug에서 index.php에 처음 연결하는 데 몇 초가 걸립니다 (한 번에 4 ~ 13 초).

MySQL에 문제가 있다고 생각하는 이유는 무엇입니까?

  • 데이터베이스를 우회하는 캐싱 플러그인을 설치하면 지연이 사라집니다.
  • 쿼리 자체는 몇 밀리 초 안에 실행됩니다

여기 에 제안 된대로 skip-name-resolve 또는 skip-networking을 my.cnf에 추가하려고 시도했지만 운이 없습니다.

내가 주목 한 또 다른 것은 페이지가 생성되는 동안 php-fpm 프로세스가 100 % CPU 부하로 급증한다는 것입니다.

나는 아파치 대신 아파치를 사용하려고 시도했지만 아파치 앞에서 nginx조차도 시도했지만 아파치 프로세스는 모든 CPU를 사용했습니다.

마지막으로, 비슷한 구성으로 다른 VPS에서이 동일한 응용 프로그램을 실행하며 지연이 없습니다. index.php는 0.5 초 안에로드됩니다.

문제가 무엇인지 어떻게 알 수 있습니까?


명령 행을 통해 데이터베이스에 연결해도 동일한 지연이 발생합니까?
Shane Madden

@Shane Madden : 아뇨; ssh에 로그인 한 다음 mysql명령 을 실행하면 빠릅니다.
scribu

CPU 사용량이 100 % 일 때 최고의 CPU 소비자는 어떤 프로세스입니까? MySQL입니까?
Alex

@ 셰인 매든 : 흠 ... 그것은 실제로 php-fpm 스파이크입니다. 그러나 캐싱을 활성화하면 더 이상 캐싱하지 않습니다.
scribu

명령 줄에서 페이지의 모든 쿼리를 실행하면 어떻게됩니까?
Dana the Sane

답변:


1
  • MySQL에 연결할 때 호스트 이름 대신 IP를 사용하십시오 (DNS 문제를 진단하기 위해 dig 사용),
  • 사용하는 고성능의 MySQL 튜닝 스크립트 , MySQL 서버에서 몇 가지 문제에 대해 당신에게 아이디어를 줄 것이다,
  • strace 또는 tcpdump를 사용하여 문제를 디버깅하십시오 ( 여기 예제가 있습니다 ).
  • PHP와 MySQL을 업그레이드하고 문제가 지속되는지 확인하십시오.

2

php-fpm이 CPU의 100 %를 사용하는 경우 이것은 MySQL 관련 문제가 아니며, PHP 코드를 검사하여 지연을 일으키는 코드를 찾아야합니다. XDebug를 사용하는 것이 좋습니다.


제안에 감사드립니다. 그러나 MySQL과 관련된 경우에만 발생하므로 MySQL과 관련이 있습니다. PHP MySQL 드라이버와 관련이있을 수 있습니다.
scribu

어쨌든 프로파일 링 데이터 샘플을 얻는 것이 좋습니다. 앱에서 많은 시간을 보내는 정확한 장소를 보여줍니다. 또 다른 접근법은 strace -pphp-fpm 프로세스 를 호출하려고 시도 하지만 strace는 앱 내부에 대해 아무것도 모르기 때문에 strace 데이터는 충분히 관련이 없습니다.
Alex

아파치로 전환을 시도했지만 문제가 지속되었지만 이제는 CPU를 호핑하는 아파치 프로세스입니다. 재미있는 점은 비슷한 VPS에서 동일한 앱을 지연없이 실행한다는 것입니다. 네, 프로파일 링이 마지막 희망이라고 생각합니다.
scribu

좋아, 프로파일 링을했고 KCacheGrind를 통해 그것을 보았다. 아무것도 배우지 못했습니다. : |
scribu

좋아, 어쩌면 시간이 지나야 할지도 모르지만, 어쩌면 cachegrind.out을 업로드하고 여기에 링크를 게시 할 수 있습니까?
Alex

1

방화벽, php-fpm에서 mysql 연결 (파이프 / 소켓으로 전환 고려)을 확인합니다.

이 모든 php-fpm이 제대로 설치 / 업그레이드되었다고 가정하고 일부 모듈을 비활성화 할 수 있습니다.

이것이 어떻게 든 도움이되기를 바랍니다.


기본 방화벽 규칙; MySQL은 skip-networking소켓을 사용한다고 가정합니다.
scribu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.