Apache SSL Plone 4.2随机代理错误

时间:2012-10-12 23:03:30

标签: apache ssl proxy plone

我使用Plone 4.2和SSL进行Apache设置,并在ssl.conf Apache文件中使用以下规则:

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 个答案:

答案 0 :(得分:1)

这不是代理设置问题; Plone的Apache代理规则可以工作,也可以不工作。代理错误是由Plone不再响应引起的,这就是为什么重启Plone会暂时解决问题。

你需要弄清楚为什么Plone会停止响应。这可能有多种原因,您必须明确指出发生了什么。

  • 您可能会遇到一个编程错误,即在您的网站的一部分中永远占用一个主题的错误。一旦线程耗尽,Plone就无法再提供正常请求而您会收到代理错误。当您的网站不再响应时,您可以使用Products.signalstack达到您的主题所针对的最高点。

  • 它可能会破坏您的ZODB缓存;例如,如果网络抓取工具尝试短暂连续加载网站的所有,则可能导致了如此多的缓存流失,以至于重建目录缓存需要一段时间。仔细查看您的日志文件(来自Apache和Plone实例)并查找模式。

    在这种情况下,你要么必须阻止抓取工具,要么安装更好的缓存来减轻Plone服务器的负担(Varnish在这种缓存设置方面做得很好,经过一些仔细的调整)。

    < / LI>
  • 一些没有经验的目录使用可能会破坏您的ZODB缓存,结果相同。在我见过的一个(非常糟糕的)案例中,一些代码会从目录中查找某个类型的所有对象,在这些结果上调用getObject()(加载每个对象)进入内存),然后将巨大的设置过滤到实际需要的少数对象。相反,在加载对象本身之前,应该使用目录来缩小要加载的对象列表。

  • 可能是你没有利用ZODB Blob;存储在磁盘上并直接从磁盘上提供的大型文件而不是ZODB对象会大大节省内存缓存。

总而言之,这可能是一些需要解决的问题,具体取决于根本原因。