kavo’s diary

備忘録

ISUCON練習日記2021-03-13 ISUCON10予選

ISUCON10予選問題で練習した。色々忘れないようにメモ。

DB分割

DBの設定複製

estate/chairを触るSQLごとに振り分け

・DBインスタンス複製

分割前測定

{"pass":true,"score":902,"messages":[],"reason":"OK","language":"go"}

1,2号機CPU

f:id:kavohtn:20210313162221j:plain

## アプリプロファイル
16:20
key                                    count  sum     avg
main.searchChairs                      1729   154460  150.25
main.searchChairs: part2               1729   114261  111.15
main.searchEstateNazotte               102    101176  991.92
main.searchEstateNazotte: part2        102    88169   864.40
main.searchEstates                     2824   87232   84.86
main.searchEstates: part2              2824   60437   58.79
main.getEstateDetail                   4712   43916   42.72
main.getChairDetail                    3848   42513   41.36
main.searchChairs: part3               1729   38794   37.74
main.searchEstates: part3              2824   24082   23.43
main.searchEstateNazotte: part1        102    12918   126.65
main.getLowPricedEstate                744    11152   14.99
main.searchRecommendedEstateWithChair  459    11142   24.27
main.getLowPricedChair                 744    10286   13.83
16:20
## nginxログ
16:20
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+
| COUNT | 1XX |  2XX  | 3XX | 4XX | 5XX | METHOD |             URI              |   SUM   |  AVG  |  MIN  |  MAX  | MIN(BODY) | MAX(BODY) |
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+
|  1729 |   0 |  1714 |   0 |  15 |   0 | GET    | /api/chair/search            | 224.296 | 0.130 | 0.005 | 1.132 |     0.000 | 17925.000 |
|  2824 |   0 |  2811 |   0 |  13 |   0 | GET    | /api/estate/search           | 203.415 | 0.072 | 0.004 | 1.062 |     0.000 | 27095.000 |
|  4712 |   0 |  4667 |   0 |  45 |   0 | GET    | /api/estate/\d+              | 171.501 | 0.036 | 0.004 | 0.984 |     0.000 |   705.000 |
|  3848 |   0 |  3823 |   0 |  25 |   0 | GET    | /api/chair/\d+               | 154.742 | 0.040 | 0.004 | 1.080 |     0.000 |   647.000 |
|   102 |   0 |    99 |   0 |   3 |   0 | POST   | /api/estate/nazotte          | 100.232 | 0.983 | 0.676 | 1.464 |     0.000 | 33942.000 |
|   744 |   0 |   744 |   0 |   0 |   0 | GET    | /api/estate/low_priced       |  12.096 | 0.016 | 0.004 | 0.340 | 13383.000 | 13426.000 |
|   459 |   0 |   459 |   0 |   0 |   0 | GET    | /api/recommended_estate/\d+  |  11.752 | 0.026 | 0.004 | 0.404 | 13081.000 | 13712.000 |
|   744 |   0 |   743 |   0 |   1 |   0 | GET    | /api/chair/low_priced        |  10.976 | 0.015 | 0.004 | 0.684 |     0.000 | 12186.000 |
|   674 |   0 |   674 |   0 |   0 |   0 | POST   | /api/estate/req_doc/\d+      |   5.288 | 0.008 | 0.004 | 0.148 |     0.000 |     0.000 |
|   228 |   0 |   228 |   0 |   0 |   0 | POST   | /api/chair/buy/\d+           |   4.048 | 0.018 | 0.004 | 0.168 |     0.000 |     0.000 |
|     1 |   0 |     1 |   0 |   0 |   0 | POST   | /initialize                  |   4.044 | 4.044 | 4.044 | 4.044 |    23.000 |    23.000 |
|     3 |   0 |     3 |   0 |   0 |   0 | POST   | /api/estate                  |   3.404 | 1.135 | 0.528 | 1.516 |     0.000 |     0.000 |
|     4 |   0 |     3 |   0 |   1 |   0 | POST   | /api/chair                   |   3.403 | 0.851 | 0.187 | 1.380 |     0.000 |     0.000 |
|   414 |   0 |   414 |   0 |   0 |   0 | GET    | /api/estate/search/condition |   0.444 | 0.001 | 0.000 | 0.008 |  2563.000 |  2563.000 |
...
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+
| 16720 |   0 | 16617 |   0 | 103 |   0 |                                                                                                  
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+


# Rank Query ID                            Response time  Calls R/Call V/M
# ==== =================================== ============== ===== ====== ===
#    1 0xB718722664D79180DE3386CFE9C21BF6   84.6158 23.1%   102 0.8296  0.02 SELECT estate
#    2 0x4E8EAE12D58B73C2F3EFAD4903F0402F   27.5122  7.5%   281 0.0979  0.01 SELECT chair
#    3 0x929E86BFE887C4E10B23D92EDD8D61BC   11.7012  3.2%   204 0.0574  0.01 SELECT estate
#    4 0xE010F89F59F07FE84177E58CAC7321CE   10.8306  3.0%   102 0.1062  0.01 SELECT estate
#    5 0xED731470FE91D25E31E27AD9C15C891F   10.3488  2.8%   191 0.0542  0.01 SELECT estate
#    6 0x85EDDA9F02FE0A0E65DBB57A0B593F83    7.3063  2.0%   133 0.0549  0.01 SELECT chair
#    7 0x3636444F1E726DFB63C508D1F648A860    6.6427  1.8%    80 0.0830  0.00 SELECT estate
# MISC 0xMISC                              207.6529 56.6%  6234 0.0333   0.0 <279 ITEMS>


分割後測定

{"pass":true,"score":1261,"messages":[],"reason":"OK","language":"go"}

1.5倍くらいになった。DB分割の効果がでている。

1,2,3号機CPU(右端の山)

f:id:kavohtn:20210313163523j:plain

## アプリプロファイル
16:30
key                                    count  sum     avg
main.searchEstateNazotte               210    162128  772.04
main.searchEstateNazotte: part2        210    138214  658.16
main.searchChairs                      2784   125966  122.53
main.searchEstates                     3374   117236  114.04
main.searchChairs: part2               2784   79401   77.24
main.searchEstates: part2              3374   74178   72.16
main.getEstateDetail                   8151   51884   50.47
main.searchChairs: part3               2784   50158   48.79
main.searchEstates: part3              3374   35627   34.66
main.getChairDetail                    7103   35234   34.27
main.searchEstateNazotte: part1        210    23718   112.94
main.getLowPricedEstate                1022   20305   19.87
main.searchRecommendedEstateWithChair  710    19414   27.34
main.postEstateRequestDocument         910    13805   15.17
16:30
## nginxログ
16:30
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+
| COUNT | 1XX |  2XX  | 3XX | 4XX | 5XX | METHOD |             URI              |   SUM   |  AVG  |  MIN  |  MAX  | MIN(BODY) | MAX(BODY) |
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+
|  8158 |   0 |  8112 |   0 |  46 |   0 | GET    | /api/estate/\d+              | 385.097 | 0.047 | 0.016 | 1.168 |   538.000 |   713.000 |
|  3374 |   0 |  3366 |   0 |   8 |   0 | GET    | /api/estate/search           | 307.486 | 0.091 | 0.004 | 0.940 |     0.000 | 20715.000 |
|  2784 |   0 |  2772 |   0 |  12 |   0 | GET    | /api/chair/search            | 287.663 | 0.103 | 0.012 | 1.084 |     0.000 | 20851.000 |
|  7103 |   0 |  7075 |   0 |  28 |   0 | GET    | /api/chair/\d+               | 237.831 | 0.033 | 0.004 | 0.820 |     0.000 |   659.000 |
|   210 |   0 |   206 |   0 |   4 |   0 | POST   | /api/estate/nazotte          | 161.540 | 0.769 | 0.062 | 1.560 |     0.000 | 34291.000 |
|  1022 |   0 |  1022 |   0 |   0 |   0 | GET    | /api/estate/low_priced       |  22.344 | 0.022 | 0.008 | 0.564 | 13323.000 | 13427.000 |
|   710 |   0 |   707 |   0 |   3 |   0 | GET    | /api/recommended_estate/\d+  |  20.386 | 0.029 | 0.004 | 0.684 |     0.000 | 13727.000 |
|   910 |   0 |   910 |   0 |   0 |   0 | POST   | /api/estate/req_doc/\d+      |  14.880 | 0.016 | 0.004 | 0.908 |     0.000 |     0.000 |
|  1022 |   0 |  1022 |   0 |   0 |   0 | GET    | /api/chair/low_priced        |  14.548 | 0.014 | 0.004 | 0.264 | 12139.000 | 12186.000 |
|     7 |   0 |     7 |   0 |   0 |   0 | POST   | /api/estate                  |  11.976 | 1.711 | 0.464 | 2.352 |     0.000 |     0.000 |
|     7 |   0 |     7 |   0 |   0 |   0 | POST   | /api/chair                   |  11.736 | 1.677 | 0.484 | 2.768 |     0.000 |     0.000 |
|     1 |   0 |     1 |   0 |   0 |   0 | POST   | /initialize                  |   7.304 | 7.304 | 7.304 | 7.304 |    23.000 |    23.000 |
|   351 |   0 |   351 |   0 |   0 |   0 | POST   | /api/chair/buy/\d+           |   5.736 | 0.016 | 0.004 | 0.120 |     0.000 |     0.000 |
|   458 |   0 |   458 |   0 |   0 |   0 | GET    | /api/estate/search/condition |   0.620 | 0.001 | 0.004 | 0.020 |  2563.000 |  2563.000 |
...
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+
| 26478 |   0 | 26377 |   0 | 101 |   0 |                                                                                                  
+-------+-----+-------+-----+-----+-----+--------+------------------------------+---------+-------+-------+-------+-----------+-----------+


# Rank Query ID                            Response time  Calls R/Call V/M
# ==== =================================== ============== ===== ====== ===
#    1 0x4E8EAE12D58B73C2F3EFAD4903F0402F   11.5774  5.1%   328 0.0353  0.02 SELECT chair
#    2 0x4FA7F17A15BCD31A08C4C2F052598EB7    5.8728  2.6%    74 0.0794  0.02 SELECT chair
#    3 0x929787B1FE641900E3DD23571CAC3AB6    5.5240  2.4%    72 0.0767  0.02 SELECT chair
#    4 0x17813360728C84E63F19DC57445EC358    4.3238  1.9%    29 0.1491  0.10 SELECT chair
#    5 0x9CCCD1D3E32D61BB18B4ECD908E723B4    4.1910  1.8%    59 0.0710  0.02 SELECT chair
#    6 0xF6CBE5E7B4D4ECE4095626C611F2D411    3.8432  1.7%    47 0.0818  0.01 SELECT chair
#    7 0x7A3943FC5D195AC5C0824B77FDBE8C4F    2.9514  1.3%    24 0.1230  0.01 SELECT chair
# MISC 0xMISC                              190.5975 83.3%  4891 0.0390   0.0 <567 ITEMS>


# Rank Query ID                            Response time  Calls R/Call V/M
# ==== =================================== ============== ===== ====== ===
#    1 0xB718722664D79180DE3386CFE9C21BF6  135.2677 41.9%   207 0.6535  0.06 SELECT estate
#    2 0xE010F89F59F07FE84177E58CAC7321CE   17.7821  5.5%   207 0.0859  0.01 SELECT estate
#    3 0x3636444F1E726DFB63C508D1F648A860    9.3767  2.9%   129 0.0727  0.01 SELECT estate
#    4 0x3A6102F5BB1888CE18692940986AC2AD    8.2232  2.5%   111 0.0741  0.00 SELECT estate
#    5 0xAA809559207975DC00087902517AC50D    6.6264  2.1%    97 0.0683  0.01 SELECT estate
#    6 0x9874FCB909778990D4BDA82D2EB9C996    6.5708  2.0%    90 0.0730  0.00 SELECT estate
#    7 0x63EDCA18912C7FEE67A0CB124E70256F    5.7084  1.8%    74 0.0771  0.01 SELECT estate
# MISC 0xMISC                              133.2300 41.3%  4788 0.0278   0.0 <135 ITEMS>