问题描述

我运行一个 WordPress 网站,大约有 70 个活跃的插件。

经常,我会在/wp-admin/页面上找到一个随机的错误页面 (“Not Found”,虽然我没有检查标题看是否是 404) 。

只需再次尝试解决错误,但是如果在插件升级期间发生错误 (因为 auto-reactivation 失败),这是非常不方便的。我认为这个同样的问题对我的仪表板有时不能加载的某些模块负责。

鉴于 list of plugins I have installed,有没有人知道任何可能导致此问题的问题?

编辑:

主机信息:DreamHost; 我认为服务器运行一个使用 Apache httpd 的自定义 Debian 构建

最佳解决方案

我整天都在遇到问题,似乎是 404 错误。

无论如何,我刚刚完成了一个梦幻技术支持人员的聊天,他告诉我,我拥有的用户帐户正在达到进程内存资源限制 (所有进程),这是导致奇怪的,似乎是 htaccess-related 问题的原因。我正在从 htaccess 文件中间断地发现 404 错误,不应该被调用!这是一个梦幻屋与一个鬼屋的服务器。

显然,梦想主机使用的过程杀死机器人会在中间杀死一个网络进程,然后由于某种原因,(现在的僵尸)apache 实际上试图完成其工作 (尽力从干净的出口退出一个子请求是我最好的猜测) 。它会在主要的 HTTP 日志中引发一个 500 错误,但是在这样做之后,它实际上触发了重写条件,并且不应该被触发的规则 (使用上面的标准文件-f 和目录-d htaccess 文件) – 并且它没有不要写一个新的日志条目!一个新的 (不可见的人) 请求然后触发 htaccess 文件最后一行的索引文件

注意 dreamhost 基本帐号的资源限制!如果你超过了极限,而且你与 mod_rewrite 线条一样,你会看到奇怪的东西,只适合万圣夜 – 隐形的男人,困扰了 404s!不死生物过程!僵尸 apache! htaccess 自己动手!哎呀!

希望这可以帮助你避免几个小时的痛苦。

次佳解决方案

调试的唯一方法是一次禁用一个插件,每次尝试在禁用另一个插件之前重现问题。从与 WP 的管理有任何关系的插件开始,然后向下移动到常规主题插件,小工具等。

检查您更好地服务的”Not Found” 页面 (使用 Opera 浏览并打开将显示标题的信息面板,或者使用 Firefox 浏览并启用”Net” 面板的 Firebug),并通过所有插件进行搜索,以查看是否他们可能直接服务。如果没有,请查看 Web 服务器的日志,找出无法提供的确切资源; 一个插件可能正在做一些花哨的重定向或重写,所以它不一定是您在浏览器中看到导致 404 的 URL 。

第三种解决方案

我只能相关我自己的经验,到目前为止,我还没有找到一个”definite” 规则来解决所有问题。

DreamHost 设置的主要问题是,在将内存消耗保持在最低限度的永恒的战斗中,这意味着摆脱尽可能多的功能 – 即所有这些将减少带宽 (对访问者有好处) 或 CPU(好对于服务器,但 DreamHost 不会像控制 RAM 那样积极地控制 CPU 消耗) 。例如,这意味着摆脱 gzip 的 HTML + CSS(将消耗 CPU + RAM) 或任何几个 Minify 插件 (也将消耗 RAM) 。缓存越复杂 (我喜欢使用 W3 Total Cache,或至少 WP Super Cache),RAM 也将被消耗。

类似地,许多限制 MySQL 查询数量以提高性能的插件将消耗 RAM 。所以找到一个 trade-off,您仍然可以保持您的站点回复良好的性能,同时避免使用宝贵的 RAM 是一项艰巨的任务!

到目前为止,我在繁忙网站上的最佳结果是取消选择页面速度优化和额外的网络安全,这显然会消耗大量的内存,而是依赖与 W3 Total Cache 和 Cloudflare(免费的反向代理服务) 的组合。 Cloudflare 将有效地执行与 「额外 Web 安全」 模块相同的事情,但由于它运行在 DreamHost 之外,没关系。 W3 Total Cache 消耗大量内存,但是一旦页面被本地静态存储,Cloudflare 将非常有效地缓存它们,所以您可以在编辑帖子时获得 404/500,至少您的访问者不会体验它们 (Cloudflare 也可以提供静态页面即使 DreamHost 给出了 404 或 500) 。

另外,感谢 this article,我发现 FastCGI 比’normal’ CGI 使用更多的 RAM 。由于 PHP 5.3 更好地管理 RAM(更积极的垃圾回收,更少的内存泄漏),我已经实验切换到 PHP 5.3 CGI(而不是 FastCGI),没有页面速度优化和额外的 Web 安全性,依靠 W3 Total Cache + Cloudflare 加速网站现在的后台比较慢 (更多的 CPU 消耗!),但至少我看不到 404/500(到目前为止!) 。

我仍然不满意的组合,所以我一定会继续调整 DreamHost 的设置,希望能够减少 RAM 功能,并且仍然获得足够的性能。像 @dgw 所说的,我也使用了很多插件 – 因为我需要它们的功能。不是每个人用 DreamHost 托管 WP 都有简单的博客需求; 网站越复杂,需要的功能越多… 这就是 WordPress 的美丽,您只需要使用真正需要的插件,并保持核心 WP 安装简单,如果你满意的几个需求。但是,插件不一定是”bad” 或在网站上很重; 但这是真的,有些可能会消耗大量的 RAM …

第四种方案

这只是一个粗略的想法:如果您收到”real” 404 错误 (使用标题设置),则可以搜索插件并查找 PHP header()函数和 404 号码。这可以从 70 到更少的一些插件的数量。那么你只需要检查那些。

这可以很容易地完成使用 IDE,如 Eclipse PDT,提供搜索特定的 PHP 函数调用。

旁边,但不保证它成功的工作,是写一个插件插入头设置,然后给你跟踪哪个代码实际上设置一个潜在的 404(回溯) 。这只有在插件使用 WordPress API 函数时才有效。寻找 PHP 功能的第一种方法将会工作,无论 WP API 如何。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。