Apacheのパフォーマンス調整

このブログはVPSで動かしているのですが、度々、メモリ不足に陥ってダウンすることがありました。今まで、このことについては再起動すれば直るので、気にしていませんでした。しかし、セミナーのサンプルファイルを保護ページで配布するようにしたり、Webサーバーと連携するコードのテストなど、以前よりも落ちていると問題があることが増えたので対策を取ることにしました。

原因調査

まずは、原因調査です。落ちるときの少し前にはwatchdogのログが大量に来ています。このログファイルの中を確認してみると、httpdが沢山起動していることに気がつきました。
[cc]apache 2488 2481 0 11:01 ? 00:00:01 /usr/sbin/httpd
apache 2489 2481 0 11:01 ? 00:00:00 /usr/sbin/httpd
apache 2490 2481 0 11:01 ? 00:00:00 /usr/sbin/httpd
apache 2492 2481 0 11:01 ? 00:00:00 /usr/sbin/httpd
apache 2494 2481 0 11:01 ? 00:00:00 /usr/sbin/httpd
apache 2495 2481 0 11:01 ? 00:00:00 /usr/sbin/httpd
apache 2524 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2526 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2527 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2529 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2530 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2531 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2532 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2533 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2534 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2535 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2536 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2538 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2539 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd
apache 2542 2481 0 11:04 ? 00:00:00 /usr/sbin/httpd[/cc]
そして、最後にはhttpdが再起動しているらしいものも出力されていました。
[cc]Stopping httpd: [ OK ]
Starting httpd: [ OK ][/cc]
VPSの利用可能なメモリに対して、httpdのプロセス数が多く、高負荷状態になっていることが原因の可能性が高そうです。

プロセス数の制限

作成されるプロセス数を制限するには、preforkの設定を変更すれば良いようです。変更するべきパラメータは次のものようです。

  • StartServers (起動時に作成される子プロセス数)
  • MinSpareServers (アイドル状態の最小子プロセス数)
  • MaxSpareServers (アイドル状態の最大子プロセス数)
  • MaxClients (応答する子プロセスの最大数)
  • MaxRequestsPerChild (子サーバーが処理可能なリクエスト数)

これらのパラメータを調整しました。調整し終わったら、Apacheを再起動して完了です。

結果

調整前はSSHでの接続すらも重い状態でしたが、Apache再起動後、5分くらいで効果が見えてきました。SSHの反応も良くなり、ブログで色々なページを開くときの読み込みも早くなりました。また、watchdogの警告メールも止まりました。

投稿者プロフィール

林 晃アプリ開発者
アールケー開発代表。Appleプラットフォーム向けのアプリ開発が好きなアプリ開発者。アプリの受託開発、技術書執筆、技術指導・セミナー講師。3DCGコンテンツ作成にも取組中です。

基礎から学ぶARKit


「基礎から学ぶARKit」を執筆しました。本書はARKitを使ったARアプリの開発方法を解説した技術書です。

ARKitを使ってARアプリを作るときの流れや基本的なAPIの使い方などをサンプルアプリを作りながら学べます。

詳細

基礎から学ぶMetal


「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。

私が初めてGPUプログラミングを行ったとき、どこから手をつけて、学んでいけば良いのか分からず呆然としました。もし、あのとき、これを教えてくれればという部分を解説しました。本書で解説している部分はMetalの基礎となる部分で、Metalを使うときに必ず触れることになる部分です。

詳細

関連記事

  1. Nibファイルに空のポップアップボタンを配置するときの注意

  2. 「開発者にとってXcode 5は何が変わったのか」というタイトルのセミ…

  3. iPhoneやiPadでのフォルダはジャンルより作業で区切った方が良さ…

  4. HistoryEditor Windows版 1.5.2 を公開しまし…

  5. ディスプレイの下に空間が出来ました

  6. セミナーのお知らせ

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事