2025 01,07 21:33 |
|
古い環境なだけに面倒なことばっかり起きる
やたら、httpdが元旦に落ちているという謎な現象 そんなわけで、httpdも監視対象にする vi /etc/monit.d/httpd
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/bin/systemctl start httpd" with timeout 60 seconds
stop program = "/bin/systemctl stop httpd"
if failed port 80 for 2 cycles then restart
if failed port 443 for 2 cycles then restart
if 5 restarts within 5 cycles then timeout
check processの行でpidファイルの存在確認。pidファイルが存在しないか、実行中のプロセスのPID番号が含まれていない場合startメソッドを呼び出す。
サービスを起動するコマンド。後ろの「with timeout 60 seconds」は起動タイムアウト時間を指定。
サービスを停止するコマンド。 80ポートへ2回連続でアクセスできなければサービスを再起動する。
443ポートへ2回連続でアクセスできなければサービスを再起動する。
5サイクル中5回再起動が行われた場合にそれ以上再起動を行わず、監視を止める。(再起動できない場合いつまでも再起動を繰り返さない処置です。) https://www.conversion.co.jp/tecblog/20210107/ PR |
|
2024 05,27 18:34 |
|
前回の記事の対応で、調べたことをメモとして
MySQLでは、テーブルにあるレコードの10%を超えるレコードに 変更を加えられた場合、該当のテーブルの統計情報(カーディナリティ)が再生成される。 構成オプション:innodb_stats_auto_recalcがONの場合。 デフォルトは、ON Analyzeする場合、 analyze table テーブル名; 以外には、mysqlcheckを使う (mysqlcheckは、MySQLのテーブルメンテナンス、修復を行なうことができる。 内部的には、CHECK, ANALYZE, REPAIR, OPTIMIZEのコマンドを利用して作業を行ない、
また、MySQLを稼働しているときに、実行することができる。)全データベースを確認する場合mysqlcheck -a -u root -p --all-databases
特定データベースのみを確認する場合mysqlcheck -a DB名 -u root -p
ついでに check(テーブルのエラーチェック)全データベースを確認する場合mysqlcheck -c -u root -p --all-databases
特定データベースのみを確認する場合mysqlcheck -c DB名 -u root -p
optimize(テーブルの最適化)全データベースを確認する場合mysqlcheck -o -u root -p --all-databases
特定データベースのみを確認する場合mysqlcheck -o DB名 -u root -p
repair(テーブルの修復)全データベースを修復する場合mysqlcheck -r -u root -p --all-databases
特定データベースのみを修復する場合mysqlcheck -r DB名 -u root -p
エラーチェックと修復を組み合わせて実行する場合mysqlcheck --auto-repair -c -o DB名 -u root -p
|
|
2024 05,24 18:29 |
|
めちゃくちゃハマったので、ここに記載
現行サーバのOSの期限が近付いたため、サーバの移行が行われました。 それにともない、DB(MySQL)も、地味にバージョンアップが実施された。 マイナーバージョンアップにより、SQLが厳密化され、型が違うカラムをJOINの条件にしていた部分をCONVERT()関数をつかって、キャストしたり。。。 CONVERT(数値カラム USING binary)=文字列カラム みたいな。。。 型を意識しないで結合して作った奴出て来いよ!と思いつつ それ以外は、プログラムの変更は行われていないのに、サーバ移行が行われ、パフォーマンスが大幅にダウン その原因究明に、駆り出され、1週間 EXPLAINなどつけて、インデックス状況を確認し、SQLをチューニングしたり でも、チューニングの結果が出ないの繰り返し。 幸いにも、旧サーバが残っていたので、新旧を比べることに。 新サーバのほうで、今まで使っていたインデックスが効いていない! なんでだ?なんでだ?と試行錯誤。 (移管した奴が調べろよっと思いつつ、ストレスが溜まる1週間) 推測はインデックスが壊れているでは?、インデックスの統計情報がおかしいのでは? と思いつつ、壊れているパターンから調査。 壊れてはいなそう。。。ということで、統計情報を確認。 差がありました。。。 確認したSQLとして、 SELECT database_name , table_name , last_update , stat_value , index_name , (stat_value * @@innodb_page_size) / 1024 / 1024 as size_mb FROM mysql.innodb_index_stats WHERE database_name='データベース名' AND table_name='テーブル名' AND stat_name='size'; 結果:size_mbが全然違うじゃん! ということで、 ANALYZE TABLE テーブル名 を実施 再度、サイズを確認し、更新されたことを確認 プログラムを動かしてみてくれ~とお願いしたら、1秒でレスポンスが返ってきた!と 苦労が報われるお返事がきました。 めちゃくちゃハマったというか、時間を使った。。。 |
|
2024 05,01 16:01 |
|
2024 02,06 16:19 |
|
最近、使う機会が増えて、なんだっけ?と思うことが増えてきたので、
ここに残す 普段は使わないsarコマンドで、過去のCPU負荷やメモリ負荷を調べる サーバにsarコマンドが入っていると、後々救われるということも痛感したので、 もしインストールされていなかったら、インストールしておいたほうがいい。 インストールされているか確認 # rpm -qa | grep sysstat
インストールされていなかったら、インストールする # yum -y install sysstat 念のためcron設定確認
#cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
CPUリソースを確認するときは「sar -p」を使用
メモリを確認するときは「sar -r」を使用
sarのデータファイルは/var/log/sa の中にあり、1ファイル/日で生成され
オプションの-fでファイルを指定する
sar -p -f /var/log/sa/sa02
他のオプション # sar -A 全情報表示
# sar -q loadaverage
# sar -n DEV 送信/受信パケットに関する情報
# sar -n EDEV エラーパケットに関する情報
# sar -u CPUの利用状況。
# sar -b ディスクI/Oの使用状況
# sar -r メモリとスワップの使用状況
# sar -W 秒当たりのスワップ情報
# sar -s time 指定時間以降のデータ
# sar -e time 指定時間までのデータ
なんだっけ?って思うといつも参考にさせて頂いている https://every-rating.com/vps/sar.html https://tech-it.r-net.info/server/command/329/ |
|
忍者ブログ [PR] |