Linux

查找停止 apache 的程序

  • December 18, 2015

我正在編寫一個 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 秒超時是編譯的預設值,所以我只能說我在猜測。

引用自:https://unix.stackexchange.com/questions/241370