Virtual-Machines
正好 90 秒重新啟動 apache httpd
我有一個 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