我在ssl.conf
Apache文件中使用以下规则设置了Plone 4.2和SSL的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。我真的不知道是什么原因造成的,上面是否有不正确的规则?
最佳答案
这不是代理设置问题。用于Plone的Apache代理规则有效或无效。代理错误是由Plone不再响应引起的,这就是为什么重新启动Plone可以暂时解决问题。
您需要弄清楚Plone为什么停止响应。这可能有多种原因,您必须查明发生了什么。
您可能会在网站的一部分中遇到编程错误,该错误永远将线程捆绑在一起。一旦线程用完,Plone将无法再处理正常的请求,并且您会收到代理错误。当站点不再响应时,您可以使用Products.signalstack
来达到线程的最高状态。
这可能是您的ZODB缓存被破坏了;例如,如果某个Web爬网程序试图短期连续加载所有站点,则可能导致太多的缓存混乱,以至于需要一段时间来重建目录缓存。仔细查看您的日志文件(来自Apache和Plone实例),并查找模式。
在这种情况下,您要么必须阻止搜寻器,要么安装更好的缓存以减轻Plone服务器上的负载(Varnish在进行此类缓存设置方面做得很好,需要进行一些仔细的调整)。
某些目录使用经验不足,可能会破坏ZODB缓存,但结果相同。在我看到的一种(非常糟糕的)情况下,一些代码将从目录中查找某种类型的所有对象,对这些结果调用getObject()
(将每个对象加载到内存中),然后过滤庞大的集合到实际需要的少数几个对象。而是应使用目录来缩小要加载的对象列表,然后再加载对象本身。
可能是您没有利用ZODB Blob;存储在磁盘上并直接从磁盘而不是从ZODB对象提供服务的大文件可大大节省内存缓存。
总而言之,这可能是一些工作,取决于根本原因。
关于apache - Apache SSL Plone 4.2随机代理错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12868256/