lighttpd 的問題

trace lighttpd 的問題,一方面是幫 pixnet,另外一方便是幫 KKBox 處理 WWW server。

凌晨跟 far 用 Skype 邊講邊 debug 弄了一個半小時,然後我再去 mailing list 上面找資料,看 source code,試看看有沒有解,最後得到幾個結論:

  • 遇到 freebsd-kqueue handler 一定掛掉。
  • 在 1.3.3 以前的版本用 poll handler 跑 fastcgi-php 沒有問題,但是在 1.3.4 以後的版本的 heavy loading environment 跑會產生大量 503 page,所以問題應該是在 1.3.3 -> 1.3.4 時有改到某些跟 FastCGI 有關的東西,或是新的 poll handler 對於 FastCGI 感冒。
  • 把 fastcgi.debug 設成 1 以後可以看到更多 debug information,發現問題在 write 到 FastCGI socket 上面時會發生錯誤,strerror() 告知是 Socket is not connected。加上 trace source code 用「printf 大法」發現 FastCGI socket 是以 non-blocking 處理所有的事情,而且看起來很像有 fd pool 在處理。
  • mailing list 上討論的錯誤訊息與我們發生的不同 (不過時間點是一樣的,這可以證明那段時間有修改到某些東西使得 lighttpdFastCGI 中間連線不順利),所以情況也不一樣。

總而言之,目前還是沒解決問題來… (雖然問題已經大概知道在哪邊了)

睡醒以後可能的解法是用 cvs checkout 對時間點一個一個測試,看看是哪天 commit 進去的東西造成的,然後看看有沒有辦法生出 patch 回報回去,或是直接丟 diff 給 Jan (作者) 請他處理。

3 thoughts on “lighttpd 的問題”

Comments are closed.