エックスサーバーで 500 Internal Serverがよく出現する
特にエラーがないサイトなのに、500 Internal Serverがよく出現する理由と、最も安易な方法で、軽減する方法を紹介します。
原因
500 Server Error ではありますが、サーバーのCPU等のリソースの利用のしすぎです。
1.コードを極力軽量化する。
メモリは食っても構いません。出来る限りCPU時間を短くするようにコーディングします。
2.簡単な対処法 サーバーキャッシュをすべてのファイルでONにする
コントロールパネルからも設定できますが・・・
.htaccess
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_AllCacheMode
この設定を行なって、すべてのファイルを、nginxに1~2分間キャッシュさせるようにしましょう。
ただし、サイトによってはこの設定を行なうと、問題が起きる場合があります。
3.不要なbot避けをする
2019年4月現在
.htaccess
SetEnvIf User-Agent "AhrefsBot" jogai
SetEnvIf User-Agent "Baiduspider" jogai
SetEnvIf User-Agent "Baiduspider+" jogai
SetEnvIf User-Agent "BaiduMobaider" jogai
SetEnvIf User-Agent "DeuSu" jogai
SetEnvIf User-Agent "Dataprovider" jogai
SetEnvIf User-Agent "HaosouSpider" jogai
SetEnvIf User-Agent "MJ12bot" jogai
SetEnvIf User-Agent "proximic" jogai
SetEnvIf User-Agent "SeznamBot" jogai
SetEnvIf User-Agent "YandexBot" jogai
SetEnvIf User-Agent "SemrushBot" jogai
SetEnvIf User-Agent "AhrefsBot" jogai
SetEnvIf User-Agent "Linguee" jogai
SetEnvIf User-Agent "proximic" jogai
SetEnvIf User-Agent "BLEXBot" jogai
SetEnvIf User-Agent "GrapeshotCrawler" jogai
SetEnvIf User-Agent "Mappy" jogai
SetEnvIf User-Agent "MJ12bot" jogai
SetEnvIf User-Agent "MegaIndex" jogai
SetEnvIf User-Agent "bidswitchbot" jogai
SetEnvIf User-Agent "SMTBot" jogai
SetEnvIf User-Agent "ltx71" jogai
SetEnvIf User-Agent "integralads" jogai
SetEnvIf User-Agent "jet-bot" jogai
SetEnvIf User-Agent "trendictionbot" jogai
order Allow,Deny
Allow from all
Deny from env=jogai
4.bingのクローラーの時間を調整する
全時間帯にアクセスが平均化するように設定すると、最も良いです。
https://www.bing.com/toolbox/webmaster
なお、googleのクローラーは調整できません。
5.phpに移植する
phpですと、全く違ったリソースで管理されているので、手間はかかるものの、最もスマートに対処することができます。
しかし、この制限は厳しいかな?
エックスサーバー上にある程度多人数のWebチャットCGIを設置するのはほぼ不可能でしょう。