LoginSignup
80
83

More than 5 years have passed since last update.

1日4万PVのバズ記事を処理するためにしたこと

Posted at

管理しているサイトの記事がバズって常に1000人がアクセスしているような状態になった。メモリは2GBでCPUも普通のVPSを使っていたので、すぐにサーバーが死んでしまった。

今回はそんなバズによる急激なアクセス増を処理する対応を行ったので、まとめておく。ちなみに環境はApache+PHP。

1. Apacheのhttped.confをチューニング

vi /etc/httpd/conf/httpd.conf

httpd.confを開き、以下の値に設定した。

StartServers       8 # Apache起動時に起動するプロセス数
MinSpareServers    5  # 最低待機プロセス数
MaxSpareServers   50 # 最大待機プロセス数
MaxClients        120 # 最大起動するプロセス数(これ以上は起動しない)
ServerLimit       120 # MaxClientsに指定可能な値の上限。基本は同じにする
MaxRequestsPerChild 10 # 子サーバープロセスが扱うことの出来るリクエストの総数

今回はMaxClientsとMaxRequestsPerChildの値を以下のように修正した。

MaxClients 
256 > 120

MaxRequestsPerChild
4000 > 10

MaxClientsの値が256になっていてhttpdがCPUリソースを専有していた。
そのため、最大起動のプロセス数を120に調整した。

MaxRequestsPerChildは大きすぎるとプロセスがいつまでも死なないので、
メモリを専有してしまっていた。
そのため、10リクエストをさばいたらプロセスが死ぬようにした。

2. PHPのメモリ利用を制限

次にPHPの利用するメモリの制限を行った。
php.iniのmemory_limitが1024MBになっていたので、128MBにした。

vi /etc/php.ini
memory_limit = 1024MB → 128MB

最後にhttpdを再起動して反映して終了。

上記の対策により合計約4万PVのアクセスがきてもCPUもメモリも問題なく、
リクエストをさばけるようになった。2GBメモリのVPSでもチューニングすれば、意外と何とかなるものですね。勉強になりました。

参考にした記事

さくらVPSで一日6万PVを処理するためにしたこと - 新卒インフラエンジニア2年目 http://d.hatena.ne.jp/koujirou6218/20101129/

Apacheのチューニングメモ - Qiita http://qiita.com/nownabe/items/1111cc32da9fe63289f0

80
83
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
80
83