PHP 웹 페이지를 작성 중인데 내 컴퓨터에서 이상한 동작이 보이기 시작했습니다. 어느 시점에서 apache/php가 브라우저에 웹 페이지를 표시하는 데 오랜 시간(8초)이 걸렸습니다. 처음에는 그것이 나인 줄 알았습니다. 버그가 있어서 스크립트를 완료하는 데 걸리는 시간을 추적하는 디버그 기능을 만들었지만 페이지를 여러 번 다시 로드하기 시작했을 때(F5 키를 누름) 내 스크립트가 아니라 다른 프로세스가 있다는 것을 알았습니다. 일부 프로세스는 아파치를 중지합니다( 또는 php 또는 mysql)을 누른 다음 F5를 몇 번 누르면 스크립트가 빠르게 완료되는 경우도 있고 시간이 많이 걸리는 경우도 있습니다.
[time_start] => Array
(
[0] => 1446841239.1471
[1] => 0.0581
[2] => 0.0589
[3] => 0.0564
[4] => 8.0531
[5] => 0.0574
[6] => 0.0621
[7] => 8.0582
[8] => 0.0548
[9] => 8.0457
[10] => 0.0755
[11] => 8.0555
[12] => 0.0512
[13] => 8.0447
[14] => 0.062
[15] => 8.0905
[16] => 0.0602
[17] => 8.0556
[18] => 0.0582
[19] => 8.0492
[20] => 0.0551
)
각 단계는 F5 키를 누른 후 실행되는 동일한 스크립트이며 항상 같은 시간이 소요되지만 때로는 완료하는 데 8초가 걸리기도 하는데, 중지하면 항상 약 8초가 걸리기 때문에 짜증납니다.
그래서 질문은 내 스크립트를 차단하는 프로세스를 찾는 방법에 대한 아이디어가 있습니까?
Ps.- 개인용 컴퓨터이기 때문에 포그라운드에서 실행 중인 작업이 많이 있는데 브라우저만 사용하고 다른 앱을 실행하지 않아도 여전히 작동이 중지되므로 백그라운드에서 실행 중인 작업이 있어야 합니다. 어떻게 찾을 수 있나요?
답변1
일관된 8초는 잠재적으로 오래 실행되는 일부 프로세스에 시간 제한이 설정되어 있음을 의미합니다. PHP 코드가 무엇을 하는지 모르면 DNS 시간을 알 수 있을 것 같습니다. PHP가 일부 네트워크 I/O 또는 기타 작업을 수행하는 경우 DNS 조회가 트리거될 수 있습니다. 가끔씩 DNS 쿼리 시간이 초과되는 현상이 나타나며 PHP는 해당 상황에서 하던 작업을 계속 수행합니다.
DNS 시간 초과가 설정되는 것을 볼 수 있는 유일한 곳은 /etc/resolv.conf
이나 resolver(3)
GNU libc에서 코드를 컴파일할 때입니다. 불행하게도 매뉴얼 페이지에서는 resolv.conf
5초의 시간 제한이 컴파일 시간 기본값이라고 주장하므로 추측일 뿐입니다.