現象
Pleasanterを使った簡易Webシステムについて、Uiの設定も大体終わり、利用テストに入ったところ、画面遷移時に異様に反応が遅くなる事象が発生しました。
開発者ツールで見てみると、index.htmlの受信が保留のままとなっています。
数秒なら許容できるのですが、下手すると1分以上待たされてしまいます。
原因
.NETのスレッドプール枯渇でした。
対応策
Pleasanterコンテナ内のImplem.Pleasanter.runtimeconfig.jsonの設定を次のように変更しました。
{
"runtimeOptions": {
"configProperties": {
"System.Threading.ThreadPool.MinThreads": 200
}
}
}
症状からスレッドプールの枯渇だろうなーと思ったのですが、設定方法がわからず探していたら、GitHubのIssueを見つけ、参考とさせていただきました。
https://github.com/Implem/Implem.Pleasanter/issues/571
感想
テストを数人でやっている状態で、たまにとはいえ画面遷移で数分待たされたときは冷や汗ものでした。小規模とはいえテストの100倍くらいのアクセスが来る予定でしたから。
最終的な解決にいたるまで、PythonとLocustを使って簡易負荷テストも行いました。
当初は同時40アクセスで応答に遅延が発生していたものが、同時500アクセス+DB書き込みを30分続けてもパフォーマンスが落ちず、この設定変更は有効でした。
簡易なものであっても、負荷テストはかけておくに限りますね。