---
# System prepended metadata

title: base2 サーバの評価

---

# base2 サーバの評価
- 30minの再起動の際の遅延などが確認されており、改善をしたい。
- できればbase2のサーバの最適化をする。
- Apacheでのチューニングを採用。

## 現状の把握

[top commnd](https://sys-guard.com/post-6318/)による解析

> 常に１以上だったならチューニングの必要性あり！

- ↓の状況からload averageは大体1.5~2くらいを推移していることが確認できる。
全く重大なボトルネックとは言えない。

- 8番目の値がプロセスの状態を表しており、基本的にはS（スリープの状態）プロセスになっている。
- Rが継続的に使用率が高い場合にはCPUがボトルネックということになるので、この場合はこの限りではない。
```
top - 11:42:11 up 55 days,  2:41,  4 users,  load average: 1.44, 1.55, 1.62
Tasks: 383 total,   3 running, 229 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.5%us,  0.2%sy,  0.0%ni, 92.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  130520980k total, 22193768k used, 108327212k free,   543544k buffers
Swap:        0k total,        0k used,        0k free,  8005544k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
23713 ec2-user  20   0  612m 277m  13m R 100.0  0.2   0:09.82 bundle
23714 ec2-user  20   0  612m 277m  13m R 99.7  0.2   0:09.82 bundle
21783 ec2-user  20   0 1237m 809m  12m S 16.9  0.6   1:01.69 ruby
21834 ec2-user  20   0 1427m 989m  11m S 12.3  0.8   0:53.49 ruby
21879 ec2-user  20   0 1111m 696m  11m S 10.3  0.5   0:37.80 ruby
21430 root      39  19 5921m  29m  15m S  3.3  0.0   0:09.26 PassengerAgent
21926 ec2-user  20   0 1174m 755m  11m S  2.3  0.6   0:30.18 ruby
21971 ec2-user  20   0  975m 576m  10m S  1.3  0.5   0:13.12 ruby
    8 root      20   0     0    0    0 I  0.3  0.0  10:32.21 rcu_sched
    1 root      20   0 19688 2580 2248 S  0.0  0.0   0:06.20 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.51 kthreadd
```
#### ロードアベレージの解析
- ロードアベレージはチューニングの必要性はあるが重大なボトルネックとはないえない。
CPUのプロセス不足
I/O負荷のボトルネックではないと判断できると思う。
```
09時00分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
09時10分01秒        16       616      0.65      1.04      1.18
09時20分01秒        17       636      0.71      1.11      1.23
09時30分01秒        18       618      0.50      0.96      1.16
09時40分01秒        18       660      0.67      1.20      1.30
09時50分01秒        17       619      0.44      0.84      1.12
10時00分01秒        32       672      0.44      0.78      1.04
10時10分01秒        17       619      0.76      1.13      1.30
10時20分01秒        18       642      1.78      1.57      1.47
10時30分01秒        17       644      1.06      1.30      1.43
10時40分01秒        18       655      0.74      1.45      1.57
10時50分01秒        17       625      0.54      1.07      1.40
11時00分01秒        26       663      0.51      1.00      1.33
11時10分01秒        18       634      0.58      1.24      1.49
11時20分01秒        19       644      1.70      1.64      1.59
11時30分01秒        18       651      0.75      1.33      1.59
11時40分01秒        16       670      0.54      1.13      1.49
11時50分01秒        17       646      0.92      1.16      1.40
12時00分01秒        27       677      0.64      1.13      1.38
12時10分01秒        20       655      1.11      1.43      1.61
```
---
#### vmstatコマンド

- CPUの空き具合の割合90%を超えることがほとんどである。（CPUのボトルネックは基本的になさそう）
- こちらを確認してもわかるように、特定のCPUに処理がよっている。適切に処理の分散ができていないと言うことが言える。（アプリケーション、ミドルウェアが適切ではない。）
```
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 108144672 543544 8007724    0    0     0     1    0    0  4  0 96  0  0
 1  0      0 108087888 543544 8007724    0    0     0     0  307   42  3  0 97  0  0
 2  0      0 108032080 543544 8007724    0    0     0     0  787  297  4  0 96  0  0
 1  0      0 108027960 543544 8007732    0    0     0     0 1574  604  4  0 95  0  0
 3  0      0 107984000 543544 8007732    0    0     0     0 1201  420  4  0 96  0  0
 3  0      0 107766136 543544 8007736    0    0     0     0 1775  925  9  1 90  0  0
 4  0      0 107619632 543544 8007748    0    0     0    24 3329 1499 10  1 90  0  0
 3  0      0 107488752 543544 8007748    0    0     0     0 3982 1937  9  0 91  0  0
 3  0      0 107384800 543544 8007748    0    0     0    60 3470 1543  9  1 90  0  0
 3  0      0 107304248 543544 8007752    0    0     0     0 2290  750  9  1 90  0  0
```
---
#### mpstat
- 先ほどはCPUの平均を取得していたので、それぞれのCPUの状態を取得してみる。
- 32CPUのうちにidle率が100％のCPUが多く存在している。
```
ec2-user@ip-172-31-17-174:~$ mpstat -P ALL 1
Linux 4.14.88-72.73.amzn1.x86_64 (ip-172-31-17-174) 	2021年08月11日 	_x86_64_	(32 CPU)

11時51分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
11時51分40秒  all   11.11    0.00    1.38    0.00    0.00    0.00    0.00    0.00   87.52
11時51分40秒    0    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   99.00
11時51分40秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒    3   52.53    0.00    0.00    0.00    0.00    0.00    0.00    0.00   47.47
11時51分40秒    4    2.97    0.00    0.00    0.00    0.00    0.00    0.00    0.00   97.03
11時51分40秒    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒    7    0.00    0.00   14.14    0.00    0.00    0.00    0.00    0.00   85.86
11時51分40秒    8    0.00    0.00    1.01    0.00    0.00    0.00    0.00    0.00   98.99
11時51分40秒    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   11   11.11    0.00    0.00    0.00    0.00    0.00    0.00    0.00   88.89
11時51分40秒   12    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   16    4.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   96.00
11時51分40秒   17    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   18    2.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
11時51分40秒   19    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   21   88.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00    8.00
11時51分40秒   22   38.38    0.00    1.01    0.00    0.00    0.00    0.00    0.00   60.61
11時51分40秒   23    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   24    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   25    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   26    3.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
11時51分40秒   27    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
11時51分40秒   28   79.21    0.00   20.79    0.00    0.00    0.00    0.00    0.00    0.00
11時51分40秒   29   70.59    0.00    2.94    0.00    0.00    0.00    0.00    0.00   26.47
11時51分40秒   30    0.99    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.01
11時51分40秒   31    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
```
---
#### メモリに関して、
- メモリの空きが大きく存在する。十分にスレッドを立ててアプリケーションを動かすことは可能。
- キャッシュやバッファもほとんどメモリを使用していないので、プロセスに割り当てられるメモリが大幅に余っている。
```
ec2-user@ip-172-31-17-174:~$ free -g
             total       used       free     shared    buffers     cached
Mem:           124         25         99          0          0          7
```
#### ストレージ
- IO数(IOPS)を見ても負荷は軽微。
```
2021年08月11日 12時02分04秒
Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
nvme2n1           0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
nvme1n1           0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
nvme0n1           0.00    11.00    0.00    2.00     0.00     0.05    52.00     0.00    2.00   0.00   0.00
```
---
#### ネットワーク

```
Tcp:
    3568279 active connections openings
    9816693 passive connection openings
    74901 failed connection attempts
    132572 connection resets received
    25 connections established
    862247707 segments received
    1348215394 segments send out
    6343788 segments retransmited
    22627 bad segments received.
    1383774 resets sent
    InCsumErrors: 22516
```

## まとめ

loadアベレージやCPUが余っていることからApachのチューニングの必要性はあるが、重大なボトルネックは見受けられなかった。サーバ自体はオーバースペックであり、Apacheが最適にプロセスの管理ができているわけではなさそうです。
特定の処理でエラーが出る問題は、再起動時にはペインディングが発生するのは確かに考えられるが、特定の時間での処理でない場合にはペインディング時と被らなければ処理が通るはずなので別の問題があるのではないかと思います。

## 追記8/17
base2のApacheのチューニングを行なっていく。

現状：
基本的には以前に設定した、bapi_customerサーバと同じ。ディレクトリなど。
```
ec2-user@ip-172-31-17-174:/etc/httpd/conf$ ls
httpd.conf  magic  rails.conf  ssl/
```
httpd.confに設定をしていく。

## 設定内容。

以前の設定内容
```
StartServers 200
MinSpareServers 200
MaxSpareServers	200
ServerLimit	550
MaxClients	500
PassengerMaxPoolSize 500
PassengerUseGlobalQueue on
```

- TCPsessionの待機を変更する。デフォルトは15秒。
15秒もコネクションを維持する必要はない。
keepAliveTimeout 3


PassengerMaxPoolSize 15



最終的
```
StartServers 100
MinSpareServers 200
MaxSpareServers	200
ServerLimit	550
MaxClients	500
```

