内部一時テーブルについて
・環境
Zabbix Server 6.0.5
MariaDB 10.5
Zabbix6.0へのバージョンアップ後から、ZabbixサーバーのDBの監視にて以下の障害が1年ほど継続しています。
MySQL: Number of internal temporary tables created per second is high (over 30 for 5m)
アイテム名:Created tmp tables on memory per second
キー:mysql.created_tmp_tables.rate
トリガー条件式:min(/Zabbix server/mysql.created_tmp_tables.rate,5m)>30
テンプレートは以下URLの公式のものを使用しています。
https://www.zabbix.com/integrations/mysql
メモリ上に作成される内部一時テーブルが多いことで、Zabbixの動作にどんな影響が考えられるでしょうか。
また、対処を行う場合どの設定値を調整する必要があるでしょうか。
ご教示いただけますと幸いです。
TNK - 投稿数: 4769
アイテム「MySQL: Created tmp tables on memory per second」の値だけでは、
問題があるかどうかはわかりません。
内部的には、サーバーステータス変数のCreated_tmp_tablesを参照していた
はずです。
ご参考:サーバーステータス変数(MySQL 8.0の場合)
https://dev.mysql.com/doc/refman/8.0/ja/server-status-variables.html
Created_tmp_tablesであれば、メモリ上で一時テーブルを作成した数なの
で、処理ロジック上必要であれば、数値が上昇する場合があります。
しかし、別のステータス変数であるCreated_tmp_disk_tablesの値が上昇する
ような場合ですと、クエリの処理時にメモリ上だけでは処理できなくて、
ディスク上に書き出して処理している可能性があるので、クエリ処理の
パフォーマンスが、ディスクのI/Oが発生する分、遅くなってしまっている
可能性が考えられます。
他の値やサーバーのI/O負荷の状況なども加味して、システムの状態を
分析してみてください。
問題が無いようであれば、トリガーの閾値を調整してもよいかもしれません。
恐らく、マクロ $MYSQL.CREATED_TMP_TABLES.MAX.WARN の調整になると思わ
れますが、使用されているテンプレートの内容を確認してから設定するよう
にしてください。
oka - 投稿数: 6
ご返信ありがとうございます。
処理ロジック上、数値が上昇する場合があるとのことで、
Created_tmp_disk_tablesの値は閾値を超えておらず低い値を維持しており
ディスクI/Oも問題ない数値でしたので、トリガーの閾値の調整で対応したいと思います。