web-dev-qa-db-ja.com

MySQLサーバー(mariadb)の過負荷なしの自動シャットダウン

古い構成では、私のVPS(1 CPU、1 GB RAM、1 GBスワップ)はほぼ2年間正常に動作します。最初から何も変更していません。

しかし、数日前にこの問題が発生しました。MySQLサーバーは自動的にシャットダウンし、DO Graphモニタリングで監視していると、CPUが過負荷(> 100%)になるたびにシャットダウンするようです。

それから私は作ってみました:

  • etc /my.cnfのいくつかのMySQLサーバーの最適化。 innodbに変換し、localhostのみを受け入れ、構成をキャッシュします。

  • サーバー内のすべてのサイトをオフにし、1のままにしますWordPressサイトのみ、このWordPressサイトはデフォルトでinnodbを使用します

Mariadbサーバーを再起動した後、すべてが問題ないようです。しばらくテストしましたが、正常に動作します。しかし、約1時間オフラインになると、再びシャットダウンしますが、すべての負荷は正常です。この問題は過負荷に関係していないようです。

これについて私を助けてください、誰かがこの問題に直面していますか?

そして、トップコマンドでプロセス暗号とは何ですか?

これがからの完全なログです

180918 10:02:50 mysqld_safe Number of processes running now: 0
180918 10:02:50 mysqld_safe mysqld restarted
180918 10:02:50 InnoDB: The InnoDB memory heap is disabled
180918 10:02:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
180918 10:02:50 InnoDB: Compressed tables use zlib 1.2.7
180918 10:02:50 InnoDB: Using Linux native AIO
180918 10:02:50 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 32632 ...
180918 10:02:50 InnoDB: Initializing buffer pool, size = 800.0M
InnoDB: mmap(860979200 bytes) failed; errno 12
180918 10:02:50 InnoDB: Completed initialization of buffer pool
180918 10:02:50 InnoDB: Fatal error: cannot allocate memory for the buffer pool
180918 10:02:50 [ERROR] Plugin 'InnoDB' init function returned error.
180918 10:02:50 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
180918 10:02:50 [Note] Plugin 'FEEDBACK' is disabled.
180918 10:02:50 [ERROR] Unknown/unsupported storage engine: InnoDB
180918 10:02:50 [ERROR] Aborting

180918 10:02:50 [Note] /usr/libexec/mysqld: Shutdown complete

180918 10:02:50 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended
180918 10:10:07 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
180918 10:10:07 InnoDB: The InnoDB memory heap is disabled
180918 10:10:07 InnoDB: Mutexes and rw_locks use GCC atomic builtins
180918 10:10:07 InnoDB: Compressed tables use zlib 1.2.7
180918 10:10:07 InnoDB: Using Linux native AIO
180918 10:10:07 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 1625 ...
180918 10:10:07 InnoDB: Initializing buffer pool, size = 800.0M
180918 10:10:08 InnoDB: Completed initialization of buffer pool
180918 10:10:08 InnoDB: highest supported file format is Barracuda.
180918 10:10:08  InnoDB: Starting crash recovery from checkpoint LSN=698432796
InnoDB: Restoring possible half-written data pages from the doublewrite buffer...
180918 10:10:08  InnoDB: Starting final batch to recover 2 pages from redo log
180918 10:10:09  InnoDB: Waiting for the background threads to start
180918 10:10:10 Percona XtraDB (http://www.percona.com) 5.5.52-MariaDB-38.3 started; log sequence nu$
180918 10:10:10 [Note] Plugin 'FEEDBACK' is disabled.
180918 10:10:10 [Note] Server socket created on IP: '127.0.0.1'.
180918 10:10:10 [Warning] 'proxies_priv' entry '@ [email protected]' ignored in --skip-name$
180918 10:10:10 [Note] Event Scheduler: Loaded 0 events
180918 10:10:10 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.56-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
180918 11:19:10 mysqld_safe Number of processes running now: 0
180918 11:19:10 mysqld_safe mysqld restarted
180918 11:19:10 InnoDB: The InnoDB memory heap is disabled
180918 11:19:10 InnoDB: Mutexes and rw_locks use GCC atomic builtins
180918 11:19:10 InnoDB: Compressed tables use zlib 1.2.7
180918 11:19:10 InnoDB: Using Linux native AIO
180918 11:19:10 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 3017 ...
180918 11:19:10 InnoDB: Initializing buffer pool, size = 800.0M
InnoDB: mmap(860979200 bytes) failed; errno 12
180918 11:19:10 InnoDB: Completed initialization of buffer pool

/etc/my.cnfで行った最適化は次のとおりです

[mysqld]
# custom
bind-address = 127.0.0.1

skip-name-resolve
skip-external-locking

key_buffer_size = 32K
max_allowed_packet = 4M
table_open_cache = 8
sort_buffer_size = 128K
read_buffer_size = 512K
read_rnd_buffer_size = 512K
net_buffer_length = 4K
thread_stack = 480K
thread_cache_size = 8

innodb_file_per_table=1
max_connections = 100
max_user_connections=50
wait_timeout=50
interactive_timeout=50
long_query_time=5

query_cache_type = 1
query_cache_limit=1M
query_cache_min_res_unit = 2k
query_cache_size=32M ## 32MB for every 1GB of RAM

tmp_table_size= 64M
max_heap_table_size= 64M

log_error = /var/log/mariadb/error.log
expire_logs_days    = 5
max_binlog_size   = 100M
innodb_buffer_pool_size=800M
innodb_buffer_pool_instances = 3

そしてここにトップコマンドがあります

1
Phong Thai

ログを読むと、「致命的なエラー」というテキストが少しあります。これは致命的なエラーを示しています。この前の数行は理由を示しています。

innodb_buffer_pool_size使用可能なメモリと一致させます。

RAMを保存し、クエリキャッシュを無効にすることでパフォーマンスを向上させることもできます。

crypto、およびメモリを消費しない最上位のすべてのプロセスは、Linuxカーネルスレッドです。

1
danblack