Virtual-Machines

正好 90 秒重新啟動 apache httpd

  • July 18, 2021

我有一個 openSUSE 13.1 虛擬機(主機執行 Virtualbox 4.2.18,也在 openSUSE 13.1 上)並且重新啟動 httpd(Apache/2.4.6)總是需要 1.5 分鐘:

foobar:~ # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service

real    1m30.778s
user    0m0.004s
sys     0m0.000s

立即隨後重新啟動是正常的(非常快):

foobar:~ # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service

real    0m1.023s
user    0m0.004s
sys     0m0.000s

5 分鐘後,重新啟動時間再次精確到 90 秒:

foobar:/tmp # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service

real    1m30.684s
user    0m0.000s
sys     0m0.000s

到目前為止我一直在尋找什麼:

  • top雖然 apache 正在重新啟動並沒有顯示很多(~0% 的使用率)。
  • netstat也沒有顯示出與外界的任何联系。

請注意,這是一個目前流量為 0 且記憶體和磁碟中有大量可用 GB 的 VM。

我還發現“重啟”的“停止”部分需要 90 秒。

知道為什麼會發生這種情況,或者我接下來應該在哪裡看?

編輯:我發現當stop需要 90 秒時,我始終會得到以下內容/var/log/apache2/error_log

[core:notice] [pid 3179] AH00052: child pid 3203 exit signal Segmentation fault (11)

經過大量的試驗和錯誤,我發現它是由php5正在載入的模組引起的/etc/sysconfig/apache2。刪除它完全停止了這種行為。

不過我需要這個php5模組,所以為了減輕這種延遲,我在中添加了以下內容etc/apache2/server-tuning.conf

GracefulShutdownTimeout 2

現在,當停止 apache 時發生段錯誤時,它只會掛起 2 秒。

同樣的事情發生在我身上,結果我將 /etc/hosts 文件保留為預設設置。

在我更新了類似這樣的主機文件後,延遲立即消失了:

127.0.0.1   localhost
::1         localhost
172.16.333.444  www.mysite.com mysite.com

參考:

服務多個域的單個 IP 伺服器的 /etc/hosts 條目

https://unix.stackexchange.com/questions/57439/slow-start-of-midnight-commander#answer-397879

引用自:https://serverfault.com/questions/574621