Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

管理しているサイトの記事がバズって常に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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした