Zabbix が「自分がヤバい」と言ってきた問題と対応
こんにちは。エンジニアのふるやです🙃
今回は Zabbix が「自分がヤバい」と言ってきた問題と対応 について、
綴らせていただきます。
経緯
メモリ使用量が多い旨の通知が...
まさかの監視する側であるZabbixサーバーから届いていた件の
対応のご紹介となります(今思えば「まさか」でもない)
そもそも、Zabbix(ざびっくす)とは?
要は、サーバーのパフォーマンス・負荷を監視するソフトウェアです。
Zabbixを使えば監視対象のCPUやメモリが高負荷になった際、
ChatworkやSlack等のWebhook APIを利用可能なサービスに
通知することも可能です。
具体的に何がどれだけヤバいのか「原因」を調べる
まず、どれぐらいメモリを使用しているのか、
コマンドで現状のメモリ使用量を確認します。
apacheかな?と推測し、絞り込みます。
$ ps aux | grep apache
php-fpmのメモリ使用量が特に多いことが判明したので、
サービスのstatusを確認します
(サービス名が分からなかったので「Zabbix php-fpm」でググりました)
$ systemctl status rh-php72-php-fpm.service
※Zabbixが使用している php-fpm のサービス名が特殊なので注意です!
$ systemctl status rh-php72-php-fpm.service
● rh-php72-php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since ------------------------
Main PID: 23375 (php-fpm)
Status: "Processes active: 0, idle: 8, Requests: 652, slow: 0, Traffic: 0.4req/sec"
CGroup: /system.slice/rh-php72-php-fpm.service
tq23375 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf)
tq23376 php-fpm: pool www
tq23377 php-fpm: pool www
tq23378 php-fpm: pool www
tq23379 php-fpm: pool www
tq23380 php-fpm: pool www
tq23545 php-fpm: pool zabbix
tq23769 php-fpm: pool zabbix
mq24208 php-fpm: pool zabbix
7月 24 18:26:27 web-server systemd[1]: Starting The PHP FastCGI Process Manager...
7月 24 18:26:27 web-server systemd[1]: Started The PHP FastCGI Process Manager.
原因を推測できたので「対応」する
設定ファイルを変更します。
上記 status から、 /etc/opt/rh/rh-php72/*.d の下に設定ファイルがあると推測、修正します。
$ vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
以下のキーを確認し、値を変更する。
pm.max_children = 50
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3
以下のコマンドで設定を反映する。
$ systemctl reload rh-php72-php-fpm.service
メモリ使用量の改善を確認する
$ ps aux | grep apache
おまけ
本番DBのslowクエリログに、
スキーマ単位でDBサイズを取得するクエリが大量に上がっていました。
以下の通り、Zabbix のアイテムにあるので、無効化します。
まとめ
「何となく動いているから」ではなく、
「どういう理由で動いているのか」や「正しいのかどうか」を
確認しながら進めていこうと改めて思いました😌
以上、エンジニアのふるや(@h_furuya_)が綴らせていただきました。