前提
WindowsServer2016 Standard
VisualStudio2015Pro(C#)
実現したいこと
ASP.NETでWebAPIを作成しております。
発生している問題・エラーメッセージ
レスポンスが不定期で15秒程度かかることがあります。通常時は1秒以内です。
原因を知りたいです。
いくつかAPI関数がありますが、15秒かかるのは1つ関数のみです。
処理自体は1秒以内で終了することは確認済みです。
クライアント側はブラウザやC#のHttpClientの両方で発生します。
Fidderで見るとサーバからレスポンスが15秒かえってきていません。
該当のソースコード
C#
public class WorkResultController : ApiController { public object GetWorkResultsByDate(string div, string datefrom, string dateto) { try { var sw = new System.Diagnostics.Stopwatch(); sw.Start(); string connectionString = AccessConnection.GetConnection(div); using (OleDbConnection cn = new OleDbConnection(connectionString)) { cn.Open(); string sql = "SELECT * FROM testテーブル WHERE 日付 >= ? AND 日付 <= ?"; OleDbCommand cmd = new OleDbCommand(sql, cn); cmd.Parameters.Add("@開始", OleDbType.Date).Value = datefrom; cmd.Parameters.Add("@終了", OleDbType.Date).Value = dateto; DataTable dt = new DataTable(); OleDbDataAdapter ada = new OleDbDataAdapter(cmd); ada.Fill(dt); var rtn = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(dt)); sw.Stop(); //$"{sw.Elapsed.TotalSeconds}秒"); // 1秒以内で終了していることを確認済 return rtn; } } catch (Exception ex) { //err.ErrorMessage = ex.Message; return } } }
試したこと
IISのアプリケーションプールは、下記サイトを参考に開始モードをAlwaysRunning、
アイドル状態のタイムアウトを1440、
有効化されたプリロードをTrueに設定しました。
https://thwack.solarwinds.com/resources/japan/f/forum/973/orion-web
0 コメント