Repository: isucon/isucon11-qualify (language: go)

Issue:
[bench] GET /api/isuとGET /api/trendで500返却が発生する
```
$ make run-bench
target=go docker compose -f docker-compose-bench.yml exec apitest go run ./main.go
19:00:57.379693 ISUCON11 benchmarker 
19:00:57.380262 ===> PREPARE
19:00:57.380299 start: load initial data
19:00:58.165157 finish: load initial data

   ____    __
  / __/___/ /  ___
 / _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.4.0
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
                                    O\
⇨ http server started on [::]:5000
19:01:09.855097 score: 0(0 - 0) : Score
19:01:09.855125 deduction: 0 / timeout: 0
19:01:09.855129 ===> LOAD
19:01:09.855140 LOAD INFO
  Language: go
  Campaign: None
19:01:09.856792 viewer load
19:01:09.856828 viewer load
19:01:09.856889 viewer load
19:01:09.856904 viewer load
19:01:09.856979 viewer load
19:01:11.441575 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 201): 500 (POST: /api/isu)
19:01:11.498496 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 201): 500 (POST: /api/isu)
19:01:11.958358 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:12.083197 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:12.894021 SCORE: NormalUserInitialize      : 2
19:01:12.896183 score: 16(20 - 4) : pass
19:01:12.896420 deduction: 4 / timeout: 0
19:01:15.524047 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200,304): 500 (GET: /api/isu/35415418-dee6-4d2b-811b-67efb763d16c/icon)
19:01:15.524333 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200,304): 500 (GET: /api/isu/065b28c8-b897-4832-bd0d-b044fbb48197/icon)
19:01:15.568761 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:15.600974 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:15.722482 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:15.794806 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:15.820416 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:15.865799 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:15.895805 SCORE: NormalUserInitialize      : 2
19:01:15.899269 score: 8(20 - 12) : pass
19:01:15.899454 deduction: 12 / timeout: 0
19:01:15.925376 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/isu)
19:01:18.896239 SCORE: NormalUserInitialize      : 2
19:01:18.896616 score: 7(20 - 13) : pass
19:01:18.896625 deduction: 13 / timeout: 0
19:01:19.861303 viewer load
19:01:19.863307 viewer load
19:01:19.864233 viewer load
19:01:19.865079 viewer load
19:01:19.866184 viewer load
19:01:21.898189 SCORE: NormalUserInitialize      : 2
19:01:21.900550 score: 7(20 - 13) : pass
19:01:21.900594 deduction: 13 / timeout: 5
19:01:24.903317 SCORE: NormalUserInitialize      : 2
19:01:24.914962 score: 7(20 - 13) : pass
19:01:24.915102 deduction: 13 / timeout: 6
19:01:27.904019 SCORE: NormalUserInitialize      : 2
19:01:27.919713 score: 7(20 - 13) : pass
19:01:27.919770 deduction: 13 / timeout: 7
19:01:29.840556 viewer load
19:01:29.846729 viewer load
19:01:29.850131 viewer load
19:01:29.850969 viewer load
19:01:29.851162 viewer load
19:01:29.898349 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:30.036327 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:30.045528 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:30.046940 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:30.052942 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:30.883038 SCORE: NormalUserInitialize      : 2
19:01:30.883902 score: 1(20 - 19) : pass
19:01:30.883946 deduction: 18 / timeout: 12
19:01:33.884013 SCORE: NormalUserInitialize      : 2
19:01:33.886017 score: 1(20 - 19) : pass
19:01:33.886444 deduction: 18 / timeout: 13
19:01:34.840879 viewer load
19:01:34.847820 viewer load
19:01:34.853472 viewer load
19:01:34.853516 viewer load
19:01:34.853779 viewer load
19:01:34.866829 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:34.867770 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:34.867913 ERR: load: status code: 期待する HTTP ステータスコード以外が返却されました (expected: 200): 500 (GET: /api/trend)
19:01:36.884009 SCORE: NormalUserInitialize      : 2
19:01:36.886881 score: -2(20 - 22) : Score
19:01:36.886916 deduction: 21 / timeout: 14
19:01:39.854255 viewer load
19:01:39.854343 viewer load
19:01:39.854344 viewer load
19:01:39.884157 SCORE: NormalUserInitialize      : 2
19:01:39.885077 score: -2(20 - 22) : Score
19:01:39.885406 deduction: 21 / timeout: 14
19:01:42.884365 SCORE: NormalUserInitialize      : 2
19:01:42.885885 score: -2(20 - 22) : Score
19:01:42.885909 deduction: 21 / timeout: 15
19:01:44.842909 viewer load
19:01:44.848088 viewer load
19:01:45.891669 SCORE: NormalUserInitialize      : 2
19:01:45.901638 score: -2(20 - 22) : Score
19:01:45.901694 deduction: 21 / timeout: 17
19:01:48.892254 SCORE: NormalUserInitialize      : 2
19:01:48.916860 score: -2(20 - 22) : Score
19:01:48.916905 deduction: 21 / timeout: 18
19:01:49.855794 viewer load
19:01:49.856134 viewer load
19:01:49.856189 viewer load
19:01:51.992653 SCORE: NormalUserInitialize      : 2
19:01:51.995449 score: -3(20 - 23) : Score
19:01:51.995633 deduction: 21 / timeout: 21
19:01:54.843393 viewer load
19:01:54.848472 viewer load
19:01:54.993518 SCORE: NormalUserInitialize      : 2
19:01:54.994931 score: -3(20 - 23) : Score
19:01:54.994981 deduction: 21 / timeout: 24
19:01:58.006488 SCORE: NormalUserInitialize      : 2
19:01:58.015665 score: -3(20 - 23) : Score
19:01:58.015713 deduction: 21 / timeout: 25
19:01:59.836076 viewer load
19:01:59.837647 viewer load
19:01:59.837765 viewer load
19:02:00.986754 SCORE: NormalUserInitialize      : 2
19:02:00.989935 score: -3(20 - 23) : Score
19:02:00.990832 deduction: 21 / timeout: 28
19:02:03.986868 SCORE: NormalUserInitialize      : 2
19:02:03.989766 score: -3(20 - 23) : Score
19:02:03.989846 deduction: 21 / timeout: 29
19:02:04.823974 viewer load
19:02:04.828009 viewer load
19:02:07.030800 SCORE: NormalUserInitialize      : 2
19:02:07.034527 score: -4(20 - 24) : Score
19:02:07.034654 deduction: 21 / timeout: 32
19:02:10.031151 SCORE: NormalUserInitialize      : 2
19:02:10.033732 score: -4(20 - 24) : Score
19:02:10.033767 deduction: 21 / timeout: 35
19:02:13.032119 SCORE: NormalUserInitialize      : 2
19:02:13.034154 score: -4(20 - 24) : Score
19:02:13.034226 deduction: 21 / timeout: 36
19:02:16.034860 SCORE: NormalUserInitialize      : 2
19:02:16.039664 score: -4(20 - 24) : Score
19:02:16.039720 deduction: 21 / timeout: 39
19:02:19.048300 SCORE: NormalUserInitialize      : 2
19:02:19.062841 score: -4(20 - 24) : Score
19:02:19.073267 deduction: 21 / timeout: 39
19:02:19.814918 LOAD WAIT
19:02:19.836427 --- ISU協会サービス END
19:02:19.840703 --- JiaAPIService END
19:02:19.843160 <=== LOAD END
19:02:19.843636 SCORE: NormalUserInitialize      : 2
19:02:19.849348 score: -4(20 - 24) : Score
19:02:19.849734 deduction: 21 / timeout: 39
```


Discussion / hints:

Fix patch:
diff --git a/webapp/go/main.go b/webapp/go/main.go
index c5157efa4..400641351 100644
--- a/webapp/go/main.go
+++ b/webapp/go/main.go
@@ -259,6 +259,7 @@ func main() {
 		e.Logger.Fatalf("DB connection failed : %v", err)
 		return
 	}
+	db.SetMaxOpenConns(10)
 	defer db.Close()
 
 	isuConditionPublicAddress = os.Getenv("SERVER_PUBLIC_ADDRESS")


Test patch: