フロントエンド:React.js、バックエンド:Ruby on Rails APIモードで稼働しているシステムを運用しています。
それぞれさくらのVPSを別々に契約し動かしていますが、APIサーバーのCPUに急に高負荷がかかり、そのままフロントからのログインリクエストなどが動作しなくなる不具合が発生してしまっています。
以前、フロント側で設定していたAPIのエンドポイントを、開発環境のみで設定すべきlocalhostのままサーバーに反映してしてしまったため同様の不具合を起こしてしまったことがありましたが、今回は本来のエンドポイントを設定しておりlocalhostが原因ではないことだけわかっている状況です。
・高負荷の原因
・原因を見つけるための方法
・解消方法
上記3点について教えていただけると大変助かります。
よろしくお願いいたします。
追記
不具合の解消についてはWebサーバーの再起動によって解消することができました。
原因についてはまだ目処が立っていません。
【原因を探すために行なったこと】
こちらの記事を参考に負荷監視を行いました。
➀top
コマンドでロードアベレージの確認
op - 19:40:38 up 238 days, 22:25, 1 user, load average: 8.67, 8.32, 8.13Tasks: 178 total, 2 running, 176 sleeping, 0 stopped, 0 zombie %Cpu(s): 41.4 us, 0.5 sy, 0.1 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.1 si, 57.9 stKiB Mem : 2046896 total, 100332 free, 1335760 used, 610804 buff/cacheKiB Swap: 4194300 total, 3867644 free, 326656 used. 412524 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND17302 apache 20 0 444264 120640 3736 S 30.3 5.9 290:33.33 ruby17920 apache 20 0 444652 120676 3992 S 30.3 5.9 291:43.17 ruby17250 apache 20 0 444164 120624 3732 S 27.4 5.9 291:02.60 ruby 17322 apache 20 0 444364 120792 3924 S 21.5 5.9 290:41.87 ruby17221 apache 20 0 444064 120548 3760 S 14.0 5.9 291:04.84 ruby17175 apache 20 0 443964 120464 3720 S 13.0 5.9 291:23.52 ruby16848 root 20 0 58428 2240 1540 R 1.0 0.1 0:00.55 top 17012 root 20 0 1647804 17048 9008 S 1.0 0.8 7:14.35 PassengerA+27183 mysql 20 0 2408444 294320 5572 S 0.7 14.4 1575:20 mysqld 1 root 20 0 207464 3292 1996 S 0.0 0.2 67:53.58 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:02.02 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 3:39.24 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+ 7 root rt 0 0 0 0 S 0.0 0.0 0:49.43 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 R 0.0 0.0 163:50.83 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dr+
CPUのコア数は1でロードアベレージがめちゃくちゃ高い・・
➁sar
コマンドでロードアベレージが高い原因を探る
00:00:01 CPU %user %nice %system %iowait %steal %idle 00:10:01 all 1.37 0.01 0.14 0.02 2.63 95.83 00:20:01 all 2.22 0.01 0.14 0.02 2.13 95.48 00:30:01 all 2.00 0.01 0.15 0.01 0.75 97.08 00:40:01 all 2.51 0.01 0.19 0.00 0.02 97.26 00:50:01 all 1.34 0.02 0.18 0.00 0.02 98.45 ・ ・ ・ Average: all 50.02 0.02 0.24 0.01 9.10 40.61
➂pidstat
コマンドで負荷の高い処理を確認
↑このコマンドの活用方法がよくわからず原因とその解消方法がわからずじまいと言った状況です・・・
19:41:54 UID PID %usr %system %guest %CPU CPU Command 19:41:54 0 1 0.01 0.01 0.00 0.02 0 systemd 19:41:54 0 2 0.00 0.00 0.00 0.00 1 kthreadd 19:41:54 0 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0 19:41:54 0 7 0.00 0.00 0.00 0.00 0 migration/0 19:41:54 0 9 0.00 0.05 0.00 0.05 0 rcu_sched 19:41:54 0 11 0.00 0.00 0.00 0.00 0 watchdog/0 19:41:54 0 12 0.00 0.00 0.00 0.00 1 watchdog/1 19:41:54 0 13 0.00 0.00 0.00 0.00 1 migration/1 19:41:54 0 14 0.00 0.00 0.00 0.00 1 ksoftirqd/1 19:41:54 0 17 0.00 0.00 0.00 0.00 2 watchdog/2 19:41:54 0 18 0.00 0.00 0.00 0.00 2 migration/2 19:41:54 0 19 0.00 0.00 0.00 0.00 2 ksoftirqd/2 19:41:54 0 25 0.00 0.00 0.00 0.00 0 khungtaskd 19:41:54 0 44 0.00 0.00 0.00 0.00 0 kswapd0 19:41:54 0 46 0.00 0.00 0.00 0.00 1 khugepaged 19:41:54 0 126 0.00 0.00 0.00 0.00 2 kauditd
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。