LINEで送る
Pocket

会社でテックブログをやっているのですが、
急に重くなり、全くアクセスができない状態になってるので、
あだちんちょっとサーバ見てくれないですか!?
となったので、原因を調査してみました。

環境はCentOS6.7 + wordpress nginx + php-fpmです。


■ボトルネックを探す

h01

php-fpmの待ちプロセスがぱない。。。何個あるのよってかんじ。(画像は例です)

・アクセスログの確認

こいつはやべえ・・・


■ボトルネック = php-fpm、アタック

きっとphp-fpmのチューニングがうまくいってない模様!!!
なのでログとconfファイル確認しましょう。

[訳]poolしてるコネクションを使い切ってるぜ。pm系の値増やしてくれ。頼んだぜ。

どうやらnginxとphp-fpmはDBの接続をpoolしてアクセスがあると空きができるまで待たせられるみたい。

後はアタックきてたので、/etc/hosts.denyで拒否してやった。
(nginx.confでもdenyでもおk)


■子プロセス数の変更(例)

デフォルトのままだったので変更しました。

staticの場合だと固定値でメモリを保有するので処理速度は上がりますが、
スペックがよければ問題ありません。
今回は4コアでメモリ4GBなので、
他の処理にもメモリを割り当ててくれるdynamicにしてみました。

・作成される子プロセスの最大数(max cliant的な)

・起動時に作成される子プロセス数。

・アイドル状態のサーバプロセス数の最小値。

・アイドル状態のサーバプロセス数の最大値。(pm.start_servers + pm.min_spare_servers)

・各子プロセスが再起動するまでに実行するリクエスト数。 (メモリリーク対策)

・phpのメモリ利用制限

・タイムアウトの設定

・nginxのチューニング

とりあえずmax client1024上げる。


■再起動


■まとめ

とりあえずこれでCPU負荷、メモリ消費、ロアベが抑えられサイトもアクセスできるようになった。あんまりチューニングしすぎると今度は502吐き出すので、
適宜変更していきましょー(・∀・)

参考:http://blog.offline-net.com/2015/05/09/centos-65-nginx-php-fp%EF%BD%8D-memory-tunables/

LINEで送る
Pocket


adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、Wordpressによるコーポレートサイトの修正、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください