Linux
查找停止 apache 的程序
我正在編寫一個 PHP 網頁,我開始在我的電腦上看到一些奇怪的行為,在某些時候 apache / php 需要很長時間才能在瀏覽器上顯示網頁(8 秒),首先我認為這是我的應用程序有一個錯誤,所以我做了一個調試功能來跟踪完成我的腳本所需的時間,但是當我開始多次重新載入頁面(按 F5)時,我注意到這不是我的腳本,而是其他一些停止 apache 的程序(或 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.-我在前台執行了很多東西,因為它是我的個人電腦,但即使我只使用瀏覽器而沒有執行其他應用程序,它仍然掛起,所以它必須是在後台執行的東西,我怎麼能找到它?
一致的 8 秒意味著某些可能長時間執行的過程設置了超時。在不知道 PHP 程式碼做了什麼的情況下,我猜你有一個 DNS 時間。如果 PHP 正在執行一些網路 I/O 或其他操作,它可能會觸發 DNS 查找。每隔一段時間,您就會看到 DNS 查詢超時,並且 PHP 繼續執行它在這種情況下所做的任何事情。
我唯一能看到設置 DNS 超時的地方是在 中
/etc/resolv.conf
,或者可能是在resolver(3)
編譯 GNU libc 中的程式碼時。不幸的是,手冊頁resolv.conf
聲稱 5 秒超時是編譯的預設值,所以我只能說我在猜測。