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

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

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

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

3回答

7030閲覧

さくらのVPS(メモリ2GB)でこのプロセスは以上なのでしょうか?

ozaki566

総合スコア29

CentOS

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

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

1グッド

0クリップ

投稿2016/01/03 13:42

編集2016/01/04 11:17

現在さくらVPSのプランでメモリ2GBのプランを利用しています。
サーバー設定などはヘルプや他のサイトを参考にし、特に問題なく半年ほど利用をしてきました。

しかし最近になってサイトが表示されなくなったり、異様に重たくなる現象が発生してしまい、頭を抱えています…。

アクセス数は月間1万PVほどで然程重たくはないはずなのですが…。

WebminのプロセスでメモリーのFreeが200MBほどしかないのですがやはりメモリ不足が問題なのでしょうか?

またサイズ300MBほどのhttpdプロセスが多数あるのですがこれは問題ないのでしょうか?

イメージ説明

ど初心者で的はずれな質問でしたら申し訳ございませんm(_ _;)m
アドバイス頂けると嬉しいです。

■追記(1/4 20:30)
お二方からの大変詳しいアドバイスありがとう御座います(>_<;)
画像をコメント欄に掲載できなかったためこちらに追記を致します。

数値は下記のような状況です。

イメージ説明

イメージ説明

MySQL version 5.1.73
Apache バージョン 2.2.15

を利用しています。

1年ほど運用を運用をして参りましたが年越しをしてから途端に重たくなり始めてしまい、現在お二方から頂いた参考サイトを見ながら設定を見なおしています。

ここで上位プランに引き上げることが一番てっとり早いのかも知れませんが、アドバイス頂いた通り次回同様の問題が発生したときにまた対応ができなくなるため、今回しっかり原因を突き止めたいと思います。

どんなアドバイスでも結構ですので確認してみると良い場所など他にあれば何卒ご教授のほどお願い致します。

ikuwow👍を押しています

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

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

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

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

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

guest

回答3

0

異様に重たくなる現象が出た際、
メモリ不足でスラッシングが発生している可能性はありそうですね。

httpdのサイズと数も気になりますが、
mysqldが1.6Gと、物理メモリの8割なのも気になります。

とは言え、実際に何が原因で現象が発生しているかは、
現象発生時の情報がないと分かりません。

異様に重たくなるなどの現象が出た際、CPU、ネットワークトラフィック、
ディスクI/Oの状況は分かりますか?
さくらvpsにはコントロールパネルが有るようなので、
その情報で良いので提示できますか?

メモリの使用量もあると良いのですが、
最低限、コントロールパネルの情報は必要と思います。

それから、現象発生時に/var/log/messagesやhttpd、mysqldのログなどに、
何かエラーログは出ていませんか?


(2016/1/4 14:42追記)
大雑把に、接続毎に使用するメモリと、接続数によらず使用するメモリがあるので、

  1. 入口で接続数を制限する
  2. 接続毎のメモリ量を制限する
  3. 接続数によらないメモリの量を制限する

ことが必要と思います。

接続数×接続毎のメモリ量+接続数によらないメモリの量

が総メモリ量の八割程度に収まるようにしておくのが良いかと思います。

1.は、p-chanさんの回答にある、Apacheの多重度の制限で実現すれば良いと思います。
MaxClients、KeepAlive、MaxRequestsPerChildの設定が重要と思います。

2.と3.については、ApacheとMySQLで分けて書きます。

Apache

2.については、制限するというより、まずはどのくらい使用しているか見た方が良いと思います。
1プロセスでは300MB程度のようなので、これをいくつの接続で使用したかを設定値を見て
判断することになると思います。
接続数はpreforkなら1ですし、workerならThreadsPerChildに設定した値と思います。
3.については、おそらくApacheで接続数によらずに使用するメモリは少ないので、
考慮に入れなくて良いと思います。

MySQL

2.3.についてのMySQLの設定では、このページやこのページにもある、以下のパラメータの設定を見直すことになると思います。

  • リクエスト毎のメモリ
sort_buffer_size join_buffer_size read_buffer_size read_rnd_buffer_size net_buffer_length
  • リクエスト数によらないメモリ
key_buffer_size query_cache_size innodb_buffer_pool_size innodb_log_buffer_size innodb_additional_mem_pool_size

設定値が、サーバにMySQLしかない場合に合わせてあり、
Apacheが使う分のメモリが計算に入っていない可能性があるのではと思っています。
設定値を見ていないので、ただの憶測ですが。

投稿2016/01/03 14:56

編集2016/01/04 05:49
eripong

総合スコア1546

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

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

ozaki566

2016/01/04 00:53

ご回答ありがとう御座いました。 サイトが重たくなるとき「FTP、サイト表示、SSH接続」はいずれもできない状態で、「さくらコントロールパネル」からログインし確認をしたところトラフィック、DISK I/O、CPUともに通常の10倍近く跳ね上がっていました。 /var/log/messageを見てみると、 Out of memory: Kill processでhttpsが終了された というエラーが頻発していました。 メモリの多い上位プランに変更すれば根本から解決することができるのでしょうか?
eripong

2016/01/04 05:40

通常の10倍というものの具体的な値が知りたいところですが、 pi-chanさんへのコメントの内容からすると、スワップが大量に発生しているようですね。 /var/log/messagesの結果から、OOM Killerも動いているようなので、 メモリ不足で重くなっているのは間違い無い様です。 また、トラフィックも10倍になっているのであれば、その時刻にアクセスが集中しているのかも知れません。 > メモリの多い上位プランに変更すれば根本から解決することができるのでしょうか? については、ひとまず現象は改善するかもしれませんが、 根本的には、必要なメモリ量の見積もりが必要と思います。 メモリ量の見積もりについては、回答に追記します。 ApacheやMySQLのバージョンや、現在の設定値も教えていただければ、 こちらでも確認します。 特に回答に書いたような設定について 教えていただけると回答しやすいです。
eripong

2016/01/04 12:06

トラフィックのグラフは、ほとんど下に貼り付いていて アクセス数が増えているのかどうか分かりませんね。 y軸方向に拡大するか、PVについて似たようなグラフを出すか、 できるでしょうか? Apacheのアクセスログを集計しても、同じようなグラフは出せると思います。
guest

0

OSの種類やApacheのバージョンも分からないので、具体的なコメントがしにくいですが…

もしLinux系のOSを使用しているならば、メモリーの空き領域を積極的にIOバッファとして利用するので、空き領域が少ないこと自体は問題ありません。
しかし、異様に重たくなる現象が発生しているのであれば、メモリー不足によるスワップが発生しているのかもしれません。
それで、まずはコンソールから下記コマンドを実行してみて、メモリースワップが発生していないかを確認して見ると良いです。

Bash

1vmstat 1 | awk '{print strftime("%Y-%m-%d %T ") $0; system("");}'

ボトルネックの特定はとても奥深い問題で一筋縄では行きませんが、下記ページはとても参考になると思いますので、ご参考までにリンクを貼り付けて置きます。

OS コマンドによるボトルネック調査

さて、アクセス数がそれ程多くなく、一方、Apacheのプロセス数が多い事がメモリー容量の不足につながっているのであれば、多重度を制限することで状況が改善するかもしれません。
まずは、現在の設定がどうなっているかを確認し、以下のページを参考に多重度を少し落としてみてはいかがでしょうか?

Apacheの多重度

以上、いくらかでもご参考になれば幸いです。

投稿2016/01/03 14:12

pi-chan

総合スコア5936

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

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

eripong

2016/01/03 14:41

バージョンは分かりませんが、タグにCentOSが付いているので、 Linuxで当たりと思います。
ozaki566

2016/01/04 00:48

早速のご回答ありがとう御座いました。 またサーバー情報の記入漏れ、申し訳御座いません。 pi-chanさんから頂いたコマンドを重たいと感じる時間に実行したところ、 2016-01-04 09:40:31 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- 2016-01-04 09:40:32 r b swpd free buff cache si so bi bo in cs us sy id wa st 2016-01-04 09:40:33 2 0 353288 75564 468 21604 0 0 224 0 351 225 5 0 93 1 0 2016-01-04 09:40:34 0 1 353196 75572 468 21572 132 0 156 0 850 276 19 1 77 3 0 2016-01-04 09:40:35 0 0 352812 75216 468 21640 348 0 424 0 942 277 18 1 77 3 0 2016-01-04 09:40:36 1 0 353536 75712 484 21744 36 740 76 792 858 356 17 1 76 6 0 2016-01-04 09:40:37 1 0 353536 75496 636 21880 0 0 280 92 735 255 7 1 89 3 0 2016-01-04 09:40:38 0 0 353532 75496 636 21900 32 0 48 0 164 52 0 0 99 1 0 2016-01-04 09:40:39 0 0 353508 75420 644 21908 152 0 160 0 221 96 2 0 97 1 0 2016-01-04 09:40:40 0 0 353508 75420 644 21912 0 0 4 0 99 45 0 0 100 0 0 2016-01-04 09:40:41 3 0 353500 75444 648 21920 0 0 12 0 1052 147 29 1 69 0 0 2016-01-04 09:40:42 0 1 351128 72236 656 21916 3136 0 3136 52 1070 728 23 1 70 6 0 2016-01-04 09:40:43 3 2 348476 71220 656 21796 11332 7656 11332 7656 2472 1486 45 5 32 17 1 2016-01-04 09:40:44 0 2 340264 63916 408 21468 19392 10872 19400 10872 2321 2618 31 4 46 17 1 2016-01-04 09:40:45 3 3 339412 61972 452 21264 16624 15540 16680 15592 2973 1822 49 6 26 18 0 2016-01-04 09:40:46 1 2 337388 57004 452 21412 18284 13856 18284 13856 2587 2508 37 5 29 28 1 2016-01-04 09:40:47 0 3 341152 56280 452 21352 21556 19156 21556 19156 1662 2331 6 3 61 29 0 2016-01-04 09:40:48 3 0 361560 70156 512 21136 13656 28880 14340 28996 5238 1849 55 7 29 7 2 2016-01-04 09:40:49 1 1 363908 71644 516 24268 8268 8400 11436 8400 1793 1744 28 3 46 23 0 2016-01-04 09:40:50 0 1 363988 72268 332 24560 60 120 608 120 611 269 12 1 55 31 0 2016-01-04 09:40:51 0 2 363084 70252 332 24600 2744 0 2816 0 1409 873 29 2 40 29 0 という結果でした。 OS:CentOS Linux 6.7 CPU:Linux 2.6.32-573.7.1.el6.x86_64 on x86_64 Running processes:166 頂いたサイトを参考に「MaxRequestsPerChild」がさくらではデフォルト4000となっていたため、こちらを「500」に下げたところ、現状サイトが表示されないほど重たくなることはなくなりました。(開くまで相変わらず3-5秒掛かってしまいますが…) 引き続き原因を探索してみます。
pi-chan

2016/01/04 04:35

確認致しましたが、メモリー不足は否めませんね。 通常「si/so」の項目はゼロであるべきですが、頻繁にゼロ以外の値になっているということは、メモリー不足のためにスワップ(=HDDアクセス)が発生しているということで、そのためにレスポンスが著しく低下していると思います。 メモリーを増やせば「取り敢えず改善」するとは思いますが、出費を伴いますし、プランの変更は比較的簡単(=いつでも出来る)ので、サーバーのチューニングをもう少しだけ頑張ってみてはいかがでしょうか。 PVの値から推察する限りでは、「同時アクセス数」ってそんなに大きくは無いですよね? もしそうなら、下記ページを参考に「MaxRequestsPerChild」と「KeepAlive」関連の設定を見直して、Apacheが早くメモリーを解放出来るようにしてみることをおすすめ致します。 「Apacheパフォーマンス・チューニングの実践 」 > http://www.atmarkit.co.jp/ait/spv/0207/23/news002_2.html そして、アクセスが多そうな時間帯にご自身でもアクセスしてみて、体感のレスポンスを確認してみると良いと思います。
guest

0

自己解決

お二方にとても参考になるアドバイスを頂くことができ大変感謝しています。
アドバイス頂いたサイトをもとに設定を行い、現在サーバーが安定した状態になりました。
(一時的な安定でないことを願うばかりです…)

行った施策:

$ vi /etc/php.ini
修正前
memory_limit = 128M を 64MBに変更

<IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 64 MaxClients 64 MaxRequestsPerChild 4000 </IfModule>

Timeout 30
KeepAlive On
KeepAliveTimeout 3

現在この2つの設定を上記の数値にしたところ、安定しています。

グラフのズームしたデータをアップロードしようと思ったのですが、さくらコントロールパネルではこの縮尺しかないようで、拡大・縮小できませんでした…。

しばらくこの状態で様子をみてみます。
もしまた同様のトラブルが発生した場合、質問をさせていただくかもしれませんがその際はまたアドバイス頂けると嬉しいです。

投稿2016/01/05 11:54

ozaki566

総合スコア29

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

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

ozaki566

2016/01/16 13:28

[1/16 更新] この設定で約2週間ほどサーバーは安定していましたが先ほどまたページが表示されない病が再発してしまいました…(;_;) もう一度見なおしてみます…。
eripong

2016/01/16 14:12

そうですね。 単純計算で、memory_limitを半分にして、1プロセス当たりのメモリ使用量が 半分になっても170MB程度で、それがMaxClientの64個有るとすると それだけで10GBを超えるので、負荷が集中すればエラーになることは考えられます。 また、2GBに収めるには、MySQLのメモリも減らさなければならない気がします。 今回の再発が、実際にアクセスの集中によるものかは、調べてみないと分かりませんが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問