数万PVに耐えるApacheチューニング

apache チューニング PVに耐える

不意の大量アクセス

その時、そのWEBサーバーを落とさないために。

1日100万PVってどんなWEBサーバー?

1日は86400秒だから、1日100万PVを稼ぎたいなら、秒間12アクセスを捌ければOKということになる。こう考えると、ハードルは低く感じるよな。ただし、アクセスには大きな波がある。だから余裕をもって同時200接続は軽く捌きたいところだ。それぐらいのピンチを切り抜けられるエンジンを積んでおけばひとまずは安心できる。

Googleアナリティクスのアクティブユーザ数

実は全く本当の意味での同時接続じゃない。あれは単位時間当たりのアクセスのべ数だ。

Apacheのチューニング

基本となるApacheのチューニングを行う。

KeepAliveはOnにしよう(推奨)

1プロセスでTimeoutで指定した秒数までまとめて処理してくれるが、KeepAliveTimeoutは2秒程度に短くするのが安全。回線が遅い人が多くなってくるとフリーズする危険性がある。そうなったらどうしようもない。

 

 

 

出たっ!必殺 mod_expireの導入

ブラウザに静的ファイルを指定した期間キャッシュさせる。380行目付近に追加するぞ!

 

 

 

 

これで終わりだと思ったか? mod_deflate!

データを圧縮してユーザに送信するのだ。

 

いよいよだな、preforkチューニング!

WEB用途に特化させる為に始めから多めにプロセスを待機させておくといい。

 

 

※restartでは反映されない可能性がある。

 

# service httpd stop

# service httpd start

 

 

PHPの設定

# vi /etc/php.ini

 

知ってますか?

デフォルト設定では1プロセスあたり最大128MBのメモリを消費することを・・・

 

 

PHPのメモリ最大使用量 = MaxClients × memory_limit

 

つまりデフォルトだと256×128M = 32768MB(32.7GB)使用できる設定で、物理メモリだけでなく仮想メモリまでと、あるだけリソースを食い尽くしてしまう危険性がある。

 

 

memory_limit = 128M

↓変更

;memory_limit = 128M←無効化
memory_limit = 16M←追加

 

 

チューニング後

MaxClients100 × memory_limit16M = 1600M(1.6GB)

 

現実的な数字になったな。memory_limitは30MBを基準に考えるといい。

メモリが16Gあるならmomory_limitは32Mと仮定して、MaxClients200だとする。

 

MaxClients200 × memory_limit32M = 6400M(6.4G)

 

こうなると、まだまだメモリに余裕があるからMaxClientは400ぐらい増やしてもいいな。なんてにやにや考えられる!また、絶対的に必要なメモリ量は動作させるアプリによる。

ここは注意したい

メモリを絞りすぎると処理できずにエラーに繋がる。趣味程度のブログなら最悪落ちてもいいが、収益性の高いサービスサイト、業務を支えるWEBシステムとなればダウンすることは許されない。緩めすぎず、絞りすぎといったチューニングの見せ所だな。結局のところ、メモリの配分について考えるのが大事で、memory_limitはデフォルトでいじらなくても構わない。

 

【APC ( Alternative PHP Cache )インストール】

中間コードをメモリにキャッシュしてくれる。

 

 

 

サーバを再起動させて反映させてくれ。

 

 

最後にエラーログがないか確認しよう。
# cat /var/log/httpd/error_log

 

PHP5.5以上向け Zend Opcache, APCuインストール

Opcache Control Panel

PHP5.5以上の環境ならこちらの記事も参照してくれ。PHPが加速するぞ。
APCu , OPcacheの導入 PHP サーバ高速化

 

 

エラー 落ちてしまったら・・・

 

WEBサーバー ダウンさせない

すまない。

 

だが、安心してほしい。

 

ここはITシステムを扱っている会社のWEBサイトなんだ。君の役に立ちたいと考えている。そうだな、この機会に我々システムガーディアンの高速WEBサーバー+静的キャッシュ+負荷分散+静的ファイルストレージシステム構築サービスを検討してみてくれないか。実績として1000万PVオーバーのWEBサーバを多数運用している。

 

もし動かしたいものがWordpressのようなCMSなら、レスポンスだって大切さ。長くても5秒以内に表示出来なければ、普通は覗いてもくれないもんだぜ。つまり1秒間にどれだけリクエストを処理できるかってことだな。WEBサーバのみをチューニングをするというのは限界があるのさ。気軽に相談してくれ。

 

【宣伝】Wordpressに最適化した高速WEBサーバーの構築

NAC3 LAMPチューニング 高速 WordPress アダルトサイト AWS 大量アクセス サーバー Nginx キャッシュ

 1000万PVオーバーのトラフィック対応

  • トラフィックと予算に合わせた適切なサイジングで設計
  • クラウドにも対応だから急な増設も安心
  • 負荷分散 + トリプル高速キャッシュの軽量設計
  • メディアサイト案件多し
  • アダルトサイト対応可能
  • コンサルティング/運用保守サポート
  • DBの冗長構成、自律起動システム対応可能

どれだけ捌けるの?

MySQL 冗長化 Nginx 高速化 プロキシ 大量アクセス 処理 サーバー落ちた オートスケール

いくらでも捌けます。

可能な限りサーバにチューニングを行い、アクセスアップに応じて並列的にサーバーを増やして負荷分散 + 冗長構成を行うのでいくらでも。

 

WordPress アダルト 高速化 大量アクセス キャッシュ 負荷分散 万PV

○○ぐらいのアクセスがあるけど大丈夫?

ご相談下さい。アクセス増加に応じた将来的な提案も可能です。Yahoo!砲だってOK!

 

yahoo砲 apache チューニング

1番ご相談の多い月間500万PV級のチューニング Apacheの使用例

 

動作や表示の遅延もなく軽快に処理しています。

また、並列処理が得意なNginxの採用で更に軽量高速な処理が可能です。

MySQLチューニングの例 InnoDB

MySQL チューニング メモリ スペック サポート innodb

DBサーバの例

 

チューニング後ではMySQLの最大使用可能メモリ容量が大幅アップしています。デフォルト状態での使用ではせっかくのハードウェア性能を発揮できません。チューニングにより眠っているパフォーマンスを覚醒。上位性能のサーバーに変更する前にチューニングで劇的に改善出来る場合が多い。

 

PR: 負荷やページが表示されない等困ってませんか。

WordPress アダルト 高速化 大量アクセス キャッシュ 負荷分散 万PV

WordPress以外のWEBサービスにも対応しております。

お気軽にご相談下さい。

 

関連

お問い合わせフォーム

なんだか大変そうだなあと感じたら是非お任せ下さい。よくある構成からピンまでキリまであります。お気軽にお問い合わせ下さい。

 

広報

この記事を書いた人:広報

システムガーディアン広報です。


この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166