状況は、Linux を搭載した AWS EC2 ミディアム インスタンスを使用しているということです。
Drupalもあります。それに加えて、Drupal と同じ設定で mysql にアクセスするファイルもいくつかあります。
問題は、ある時点で mysql が接続を拒否することです。
低負荷または高負荷 (これとは関係ありません) がある場合に発生し、アクセスできなくなると、mysqld プロセスは引き続き実行され、停止しません。
このプロセスを再起動しても問題は解決しません。インスタンスの再起動 - 問題を修正します。
localhost に接続すると、次のようになります。
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql.sock ファイルが配置され、適切な権限がある場合。
mysqld を再起動しても問題は解決しませんが、インスタンスを再起動すると問題が解決します。
my.cnf は次のようになります。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
wait_timeout=28800
interactive_timeout = 28800
max_allowed_packet=32M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
同様に、mysqld はエラーなしで実行され、ログには次のように表示されます。
120830 9:48:00 [Note] /usr/libexec/mysqld: Shutdown complete
120830 09:48:00 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120830 09:48:01 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120830 9:48:01 [Note] Plugin 'FEDERATED' is disabled.
120830 9:48:01 InnoDB: The InnoDB memory heap is disabled
120830 9:48:01 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120830 9:48:01 InnoDB: Compressed tables use zlib 1.2.3
120830 9:48:01 InnoDB: Using Linux native AIO
120830 9:48:01 InnoDB: Initializing buffer pool, size = 128.0M
120830 9:48:01 InnoDB: Completed initialization of buffer pool
120830 9:48:02 InnoDB: highest supported file format is Barracuda.
120830 9:48:02 InnoDB: Waiting for the background threads to start
120830 9:48:03 InnoDB: 1.1.8 started; log sequence number 4191070086
120830 9:48:03 [Note] Event Scheduler: Loaded 0 events
120830 9:48:03 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.20' socket: '/var/lib/mysql/mysql.sock -u root' port: 3306 MySQL Community Server (GPL)
問題が再び発生したとき、ログを再度取得し、httpd を停止してから mysqld を停止し、mysqld を実行してから httpd を実行しようとしましたが、ログは通常の状態のログとまったく同じで、再起動シーケンスも同じです。
php.ini を変更しても状況は保存されませんでした:
mysql.allow_persistent = Off
この順序で再起動しても役に立ちません (別の順序で試しても):
service httpd stop
service mysqld stop
service mysqld start
service httpd start
何が問題なのか、どうすればそのような落下を防ぐことができるのかを突き止めたいと思います。