2012-10-12 16 views
0

我有Apache的安裝與Plone的4.2和SSL與在ssl.conf Apache的文件以下規則:Apache的SSL的Plone 4.2隨機代理錯誤

RewriteEngine On 
ProxyVia On 
Redirect permanent/https://mywebsite.com/PloneSite/subfolder 
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/https/%{SERVER_NAME}:443/VirtualHostRoot/PloneSite/subfolder/$1 [L,P] 

然而,大約一次,一天兩次(似乎是隨機的),該網站將變得非常慢,並最終開始提供502錯誤(代理錯誤)。看來解決這個問題的唯一方法是用「plonectl restart」重新啓動plone。我真的很擔心這是什麼原因造成的,有沒有上面的規則看起來不正確?

回答

1

這不是代理設置問題; Plone的Apache代理規則既可以工作也可以不工作。代理錯誤是由於Plone不再響應而引起的,這就是爲什麼重新啓動Plone會暫時解決問題的原因。

你需要弄清楚爲什麼Plone停止響應。這可能有許多原因,你必須指出發生了什麼。

  • 您可能有編程錯誤,在您的網站的一部分永久綁定線程。一旦用完了線程,Plone就不能再提供正常的請求,並且出現代理錯誤。您可以使用Products.signalstack來達到當您的網站不再響應時您的線索達到的最高點。

  • 它可能是你的ZODB緩存的東西;如果一個網絡爬蟲試圖在短時間內連續加載您的網站的全部,例如,它可能會導致如此之多的緩存翻滾以至於重建目錄緩存需要一段時間。仔細查看日誌文件(Apache和Plone實例)並查找模式。

    在這種情況下,您必須阻止爬蟲,或者安裝更好的緩存來減輕Plone服務器的負載(Varnish在緩存設置方面做得非常出色,並進行了一些仔細的調整)。

  • 一些沒有經驗的目錄用法可能會丟棄您的ZODB緩存,結果相同。在我看到的一個(非常糟糕的)案例中,一些代碼會從目錄中查找某個特定類型的所有對象,並在這些結果上調用getObject()(將每個對象加載到內存中),然後過濾巨集到一些實際需要的物體。相反,在加載對象本身之前,該目錄應該用於縮小要加載的對象列表。

  • 它可能是你沒有利用ZODB Blob;存儲在磁盤上並直接從磁盤提供而不是從ZODB對象直接提供的大文件會大大節省您的內存緩存。

總而言之,這可能是一些工作來解決,這取決於根本原因是什麼。

+0

謝謝 - 我懷疑是這種情況。我正在瀏覽一些內容,試圖找到根本原因,並且一旦我弄清楚到底發生了什麼,就會更新票證(並接受這個答案)。 – lightningmanic

+0

@核知識:不確定更新問題是否是最好的主意。只要爲可以排除的新問題創建一個新問題。儘量做到儘可能具體。還要注意:這是堆棧溢出,*不是* Plone支持系統,因此帖子不是'票據'。 :-) –

+0

它實際上是一個懸掛的外部數據庫管理系統 - 所有Plone的線程都被捆綁起來等待DBMS響應。 – lightningmanic