mariadbでsleepのプロセスが多くToo many open filesの対応
かたわらで起こってた事件の調査をざっくりした備忘録です。
ここに書いてるほかにはコネクションプーリングをクライアント側アプリで実装するとかかと思われ。
sleepが多い件
wait_timeoutを短く、という記事が散見された。(set globalでオンライン更新可能)
MySQLでToo many connectionsが起きた場合の対処方法 - わかりやすい
システム開発の備忘録 | MySQL - sleepプロセスが溜まる
すでに結構短いな↓と思ったらもともと60だったのを相談して40にしてた模様。
→show full proccesslist;見た感じはsleepは600越えだったものの
replication以外のユーザが40秒以上sleepしてるプロセスはなかった
show global status;でMax_userd_connectionsは増えてなさそうで
thread_cache_sizeとmax_connectionsは足りてそうだった
→ほかのタイムアウト値を調整しなくても大丈夫そう
MariaDB [(none)]> show global variables like '%timeout%';
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| deadlock_timeout_long | 50000000 |
| deadlock_timeout_short | 10000 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 30 |
| thread_pool_idle_timeout | 60 |
| wait_timeout | 40 |
+----------------------------+----------+
13 rows in set (0.01 sec)
ちなみに本家の5.7だとmax_execution_time
というパラメータがありサーバサイドでクエリのタイムアウトを設定可能な模様。
詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド(奥野幹也) | 翔泳社の本
しかしmariadbでは10.1でも設定できない模様↓。
System Variable Differences Between MariaDB 10.1 and MySQL 5.7 - MariaDB Knowledge Base
Too many open files対策
エラーログに出てた件。
いまは出てないけど念のためlimitを無限にしたらいいのではと。
MariaDB on CentOS 7 - "Error in accept: Too many open files"
CentOS7なので
/usr/lib/systemd/system/mariadb.service
の[service]セクションに以下を追加してsystemctlデーモンをリロードしてmariadbプロセスをリスタートする
LimitNOFILE=infinity
mysqltuner
`query_cache_limit (> 1M, or use smaller result sets)`
→DBのキャッシュはほとんど使ってなさそうでlimit減らしてはどうか
`innodb_buffer_pool_instances(=22)`
→innodb_buffer_pool_sizeを1GBで割った商にすると効率よいとマニュアルにある
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.13.1.4 複数のバッファープールインスタンスの使用
この値は5.6では動的変更はいいえで変えるならmy.cnfに追記してmariadbの再起動が必要。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.12 InnoDB の起動オプションおよびシステム変数
show global status;でざっくり確認
Created_tmp_disk_tables
と
Sort_merge_passes
とかの致命的なやつは0だったのでまあ大丈夫かなと思った
http://dbstudy.info/files/20130318/tuningathon5_mysql56.pdf
http://qiita.com/tyoro/items/5436a5172b547e5e52f5
コネクションプールは商用版になんかあった気がするなと思って検索した。↓これですかね。
MySQL :: MySQL Enterprise Scalability
以上。
Author And Source
この問題について(mariadbでsleepのプロセスが多くToo many open filesの対応), 我々は、より多くの情報をここで見つけました https://qiita.com/smallpalace/items/dff0eb8cb65497b02800著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .