秒解不了WordPress的520及525問題by [mpm_winnt:notice]

腫魔沒人留言?快點下去搶頭香啊!

 

問題

自從 Fatal error: Out of memory問題 改用x64的PHP和Apache解決之後,每天都瘋狂發生error 520問題,但F5重新整理就會好。

A/B test(即交叉測試),初步排除不是Cloudflare的問題

因為拿掉Cloudflare後,問題依舊。

初步解決

首先觀察error.log,發現很多[mpm_winnt:notice],根據 apache.org: thread limit

The default value for ThreadLimit is 1920 when used with mpm_winnt

我改了一下設定,問題似乎有改善,但它心血來潮還是會對我表達愛意(520),只是沒有原本那麼濃烈,或者我狂點連結也是會520,再看log發現超過1920就被限制住,此時apache.org又說

There is a hard limit of ThreadLimit 20000 (or ThreadLimit 100000 with eventThreadLimit 15000 with mpm_winnt) compiled into the server

看來應該至少可以15000,超過就必須再

modify the value of MAX_THREAD_LIMIT in the mpm source file and rebuild the server

等等,先不管為何我超過不了1920,問題是我的網站根本沒那麼多人逛啊!? 算了,1920就1920吧。

暫時完全解決了(2018/8/3更新)

剛剛心血來潮用Chrome F12觀察了一下,加上Google的Pagespeed最近居然測不到小波的網站速度,甚怪!就在Chrome F12中看到有很多封包都沒mem cached,而是disk cached,來源都是Rocket Loader,一查才發現是我之前無聊在Cloudflare把很多服務都開啟,結果剛剛全部一關,520及Pagespeed測不到速度等問題都迎刃而解。

結論

兇手還是Cloudflare

107/11/17小波記:今天又發生520,將Cloudflare的Automatic Cache Management弄成OFF就好一下,後來又520…。

107/11/17小波記:今天又發生520,看error.log是qTranslate-X的問題,解法

把檔案qtranslate-x/qtranslate_frontend.php的523行程式碼

function qtranxf_postsFilter($posts,&$query) {//WP_Query

改為

function qtranxf_postsFilter($posts,$query) {//WP_Query

和597行的程式碼

function qtranxf_excludeUntranslatedPosts($where,&$query) {//WP_Query

改為

function qtranxf_excludeUntranslatedPosts($where,$query) {//WP_Query

0 0 vote
Article Rating
訂閱(Subscribe)
來自於(Notify of)
0 Comments
Inline Feedbacks
View all comments