質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

serverspec

serverspecは、Ruby製のサーバ環境テストケース作成ツールです。

Q&A

解決済

1回答

8549閲覧

高LoadAverage時の原因ファイルの特定について

MakotoNishimoto

総合スコア12

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

serverspec

serverspecは、Ruby製のサーバ環境テストケース作成ツールです。

0グッド

1クリップ

投稿2016/07/24 13:52

サーバーが重い場合の対処についてご相談させていただけますでしょうか。

サーバー管理者の立場でWebサーバー(CentOS)を貸出をしているのですが、数日に一度くらいの頻度で急にLoadAverageが跳ね上がり、サーバーが応答できない状態となっていまいます。慌ててサーバー再起動をすると改善されるのですが、サーバー内の何が原因になって突然高LoadAverageとなってしまうのかが特定できません。

詳しい状況としては下記のとおりです

・LoadAverageが数分以内に一気に10〜30くらいに跳ね上がります
・症状の発生日や時間などはまちまちで、夜中に起きたり昼間に起きたりまちまちです。特定の時間に発生したりはしていないようです
・発生時のエラーログ及びアクセスログを見てみても、特に不審なエラーや繰り返しアクセスは発生していません
・サーバー内はお客様へ自由に使っていただいているため、大量の知らないプログラムが稼働しています。どのプログラムが高LoadAverageの原因になっているのか見当が付きません
・サーバー再起動後には何事もなかったかのようなLoadAverageに戻っており、例えばYahoo砲のような大量アクセスによるものとは考えづらい(アクセスログも普通ですし・・)

このような状態となっています。

問題の解消のため、原因となっているWebサーバー内のプログラム(おそらくはプログラムだと思うんですが・・)を特定して対処したいと思うのですが、エラーログ等からも見当がつかないため、どうやって問題のファイルを特定すればいいのかがわかりません。

何か原因ファイルを特定する手段はないものでしょうか。
ご存知の方がいらっしゃいましたらアドバイスいただけますと幸いです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ロードアベレージが高い時の調査方法ですが、
CPU使用率が100%に張り付いている場合はCPU使用率をpsコマンドで対象プロセスを確認。
idleが高ければ、メモリ使用率やディスクIOを確認します。
SWAPが発生している場合はメモリ使用量が原因の可能性が高いです。psコマンドで確認可能。
SWAPが発生していない場合は、ディスクIOの可能性が高いです。vmstatでシステムのIOを確認できます。
プロセスを特定する方法はiotop, dstat, pidstat等で確認できます。
これらのコマンドがない場合、/prod/<PID>/ioを確認し、rcharの値やwcharの値が多いPIDがそのプロセスです。

以下、追記

アクセスログの書式に %P を加えるとプロセスIDを記録します。
PSで見て重そうなapacheのプロセスIDが居た場合、そのプロセスIDの該当するログに記載されているPHPが記録されます。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P" combined

また、/procファイルシステムで、 /proc/<PID>/cwd がカレントワーキングディレクトリへのリンクとなるため、
重い httpd プロセスが居た場合、そのプロセスIDを指定して ls /proc/<PID>/cwd してあげると、
そのCWD配下のファイル一覧が表示されます。

# ls /proc/1234/cwd/ hoge.php

投稿2016/07/24 14:24

編集2016/07/24 14:50
moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MakotoNishimoto

2016/07/24 14:36

アドバイスありがとうございます、大変助かります! swapやCPUについて確認を行ってみます。swapは特に問題なさそうでしたが、CPU稼働率はチェックしていませんでした プロセスの特定についてなのですが、仮にhttpdのプロセスに問題があったとして、どのファイル(PHP等のプログラム)が問題を起こしているか、というのは特定できますでしょうか psコマンドだとプロセスは特定できてもどのファイルかが特定できなかったかと思っているのですが、如何でしょうか 諸々お手数ですがアドバイスいただければ幸いです よろしくお願いします
MakotoNishimoto

2016/07/24 22:03

追記ありがとうございました!おっしゃる方法で調べることができそうです、試してみます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問