Apache-2.2

PHP 為 <1% 的使用者提供空白頁面

  • October 25, 2011

我們最近將我們的站點遷移到 varnish 後面的負載平衡 apache 集群。從那時起,一小部分使用者報告他們無法查看任何頁面。我已經把這個問題縮小了很多。這個問題在搬遷之前不存在,舊的基礎設施是一個大盒子。

我們在 Rackspace Cloud 上執行 8 個在 varnish 3.0 後面的 apache2 實例,所有這些實例都使用 Rackspace Cloud 負載平衡器(Zeus)和 2 個 mysql 實例進行負載平衡,總共 10 台伺服器,全部是 linux。

使用者可以查看靜態 html 文件。使用者可以查看靜態資產,例如圖像。使用者無法查看任何 php 文件,即使是僅包含 phpinfo() 的簡單文件;當負載均衡器從圖片中取出時,使用者無法查看任何 php 文件。

除了訪問日誌之外,apache 日誌沒有顯示任何值得注意的內容。PHP錯誤報告設置為記錄,不顯示,雖然我設置為顯示一小會,使用者仍然得到一個沒有錯誤的空白頁面。Apache/Varnish/PHP 錯誤日誌沒有顯示任何值得注意的內容。

伺服器是:

  • Ubuntu Maverick 10.10
  • Apache 2.2.16-1ubuntu3.1 (mpm-worker)
  • PHP 5.3.3-1ubuntu9.5(用於 fcgi)
  • PHP APC 正在使用中
  • 應用程序在程式碼點火器上
  • Varnish 是 2.1.3,現在是 3.0.0 - 兩個版本都存在問題
  • MySQL 是 master-master 設置中的數據庫後端,但由於客戶端訪問問題,文件僅包含 phpinfo(); 我確信數據庫不是問題。

部分配置截圖:

我可以提供進一步調試所需的任何/所有日誌,但對於遇到此問題的使用者而言,其中沒有任何值得注意的地方,典型的來自 apache 的訪問,沒有來自 php.ini 的錯誤。

我有一種感覺,它可能與 php 會話儲存有關,儘管我無法確認這一點。

非常感謝您對問題的任何見解。最後重申一次,這個問題只影響極少數使用者。5-10 已經就這個問題聯繫了我們,但我認為這個數字比那些沒有費心報告這個問題的人要多。與我們聯繫的這 5-10 位使用者遍布各個大洲/國家/ISP。

原來這是一個問題,由於權限問題,PHP 無法登錄到指定的日誌文件,並且錯誤顯示被禁用。

因此,PHP 錯誤未顯示或無法記錄 - 但空白頁面的根本原因是由於一個奇怪的 PHP 致命錯誤。

也許這會對你有所幫助:你有 KeepAlive 開始嗎?

我們在使用 mpm-itk 的 varnish 中遇到了同樣的問題,問題是,當使用不同的 vhost 訪問 mpm-itk 時,實際的 keep-alive 會話是,他只是終止了連接。然後,每個普通瀏覽器都會嘗試重新連接,但 varnish 不在預設配置中。刪除 KeepAlive 後不會發生這種行為,因此它解決了這個問題。

我知道,您沒有使用 mpm-itk,但也許值得一試。

另一個想法:您可以繞過清漆訪問該站點並嘗試強制空白頁面嗎?所以你可能會發現清漆是否是問題所在。

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