サーバーがつながらない。webページが表示されないときに確認すること。

1.ターミナルでサーバーにログインできるか。

poderosaを使用。サーバーにログインできるのであればサーバー自体は問題ないの判断。

2.HTTPサーバー(apache)は起動しているか確認。

---------------------------------
service httpd status
---------------------------------

もしくは

---------------------------------
/etc/init.d/httpd status
---------------------------------
/etc/init.dディレクトリ → デーモンを起動するためのファイル(起動スクリプト = rcスクリプト)が置いてある
rc は run command

結果(起動している場合)
---------------------------------
httpd (pid 1759) を実行中...
---------------------------------

2.HTTPサーバー(apache)が起動しているか確認。

---------------------------------
# service httpd status
---------------------------------

もしくは

---------------------------------
# /etc/init.d/httpd status
---------------------------------
/etc/init.dディレクトリ → デーモンを起動するためのファイル(起動スクリプト = rcスクリプト)が置いてある
rc は run command

結果(起動している場合)
---------------------------------
httpd (pid 1759) を実行中...
---------------------------------

3.mysql が起動しているか確認。
---------------------------------
# service mysqld status
---------------------------------

もしくは

---------------------------------
# /etc/init.d/mysqld status
---------------------------------

結果(起動している場合)
---------------------------------
mysqld (pid 1634) を実行中...
---------------------------------

apache は起動しているが mysql が落ちている時に、ページにアクセスすると php のエラーが出る

-----------------------------------------------------------
Warning: mysql_set_charset(): No such file or directory in /var/www/libs/~~~~

Warning: mysql_set_charset(): A link to the server could not be established in /var/www/~~~~~
ConnectError!DB Error: connect failed
-----------------------------------------------------------

この場合は、mysqld を再起動などする
-----------------------------------------------------------
sudo /etc/init.d/mysqld restart
-----------------------------------------------------------

4.webサービスに繋がらない原因はアクセス過多の場合が多いので現在のhttpdのプロセス数を確認する

-----------------------------------------------------------
ps aux |grep httpd |wc -l
65
-----------------------------------------------------------

この数字が http.cnf の ServerLimit を超えるとサーバーが停止する。

-----------------------------------------------------------

StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

-----------------------------------------------------------

エラーログにもエラーが出る。

エラーログを調べる
-----------------------------------------------------------
cat /var/log/httpd/error_log
-----------------------------------------------------------

エラーログ一部抜粋
------------------------------------------------------------------------------
[Fri Aug 27 01:28:32 2021] [error] server reached MaxClients setting, consider raising the MaxClients setting
------------------------------------------------------------------------------

5.ネットワークの状態も確認する
-----------------------------------------------------------
# netstat -tpn
-----------------------------------------------------------

netstat で同じipアドレスからのたくさんの重複アクセスを確認したので、対策として mod_evasiveをインストールした
その時の記事
ただしあまり効果が感じられない。インストールしてもサーバーは止まるし、ipを遮断したらメールが来る設定にしているが遮断条件に満たなくてメールがあまり来ない。

ipアドレス別でサーバーに接続している数を調べる
-----------------------------------------------------------
# netstat -tan | awk '{print $5}' | cut -d : -f1 | sort -n | uniq -c | sort -n
-----------------------------------------------------------

-----------------------------------------------------------
37 66.249.68.××
42 157.55.39.××
42 40.77.167.××
43 157.55.39.××
45 207.46.13.××
51 66.249.68.××
2256 207.××.××.××
-----------------------------------------------------------
207.××.××.×× が異常な接続数なので ipアドレスを解析してクローラーでなければ ipアドレスを拒否する

netstat で大量のCLOSE_WAITを確認。その時に行った対策のメモ

サーバーがつながらない。CLOSE_WAITが大量発生