Webサーバの各タイムアウトと最大接続数の設定について

3,935 views
Skip to first unread message

masatakashibuya

unread,
Aug 10, 2018, 7:57:22 AM8/10/18
to OpenTouryoProject
西野様

お世話になっております。渋谷です。

Webサーバの各タイムアウト設定と最大接続数についてご教授お願いいたします。

環境------------
Webサーバ
Windows Server 2016
IIS10.0
開発者毎にアプリケーションプールを作成しています。

DBサーバ
Windows Server 2012
Oracle Database 12c
---------------


app.config
FxSqlCommandTimeoutキー

web.config
httpRuntime executionTimeout

Client側のxmlファイル
TMProtocolDefinition.xmlのTransmissionに指定してあるtimeout

IISの詳細設定
最大接続数
接続のタイムアウト


以下の流れで、ご教授お願いいたします。
Client -> Webサーバ -> APサーバ -> DBサーバ -> APサーバ -> Webサーバ -> Client
・まず、流れに間違いがありませんでしょうか。
・各タイムアウト時間はどのフェーズに影響するでしょうか。
・上記以外にタイムアウトの設定はないでしょうか。
・各サーバの最大接続数は、どこかで指定されているのでしょうか。
・または、指定する箇所は、IISの詳細設定のみでしょうか。

その他お気づきになることなどありましたら
よろしくお願いします。

daisukenishino

unread,
Aug 11, 2018, 12:09:58 PM8/11/18
to OpenTouryoProject
渋谷さん

ASP.NETで考慮すべきタイムアウト値 - マイクロソフト系技術情報 Wiki
https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%E3%81%A7%E8%80%83%E6%85%AE%E3%81%99%E3%81%B9%E3%81%8D%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82%A6%E3%83%88%E5%80%A4

この辺が参考になりますが、

app.config
FxSqlCommandTimeoutキー
→ sqlcommand.commandtimeoutへ設定する。

web.config
httpRuntime executionTimeout
→ APサーバー側の実行タイムアウト

Client側のxmlファイル
TMProtocolDefinition.xmlのTransmissionに指定してあるtimeout
→ ASP.NET Webサービスのクライアント側のタイムアウト
 WCFの場合は、configのbindingsに設定、
 WebAPIは現バージョンでは設定していないので設定するように修正します。

IISについては、バージョンによって
設定方法がまちまちなのでdocsを見てください。

昔の情報を見ると、コネクション・タイムアウト以外ないと書いてある。
これ、多分、HTTPキープ・アライブの設定なんじゃないかと思います。


あとは、基本的に問題になったときだけチューニングするといいと思います。

Windows 自動パラメタとチューニング - マイクロソフト系技術情報 Wiki

西野

2018年8月10日金曜日 20時57分22秒 UTC+9 masatakashibuya:

daisukenishino

unread,
Aug 14, 2018, 12:23:29 AM8/14/18
to OpenTouryoProject
渋谷さん

> WebAPIは現バージョンでは設定していないので設定するように修正します。

とりあえず、修正しました。


必要なら、817-821を取り込んでください。

西野

2018年8月12日日曜日 1時09分58秒 UTC+9 daisukenishino:

masatakashibuya

unread,
Oct 3, 2018, 10:57:11 PM10/3/18
to OpenTouryoProject
西野さん

Select、InsertするSQLで
Select部分で大量件数であり検索時間もかかるようなものがあるのですが、
これを実行すると以下のようなエラーが発生しました。

転送接続からデータを読み取れません:既存の接続はリモートホストに強制的に切断されました。

そこで、Client側のapp.configの以下のタグで
      <basicHttpBinding>
        <binding name="BasicHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>

receiveTimeoutを大きな値にすると
エラーが解消されたようにです。

ここの設定がどういったものかよくわからないので
対処法として合っているのかも確かでないため

ご教授よろしくお願いいたします。


2018年8月14日火曜日 13時23分29秒 UTC+9 daisukenishino:

masatakashibuya

unread,
Oct 4, 2018, 3:27:38 AM10/4/18
to OpenTouryoProject
西野さん

関係なかったようです。

Client側のTMProtocolDefinition.xmlの
<Transmission id="" protocol="2" url_ref="url_a" timeout="200" prop_ref="prop_a" />
timeoutの設定で
200としていたのでClient側は落ちて、サーバー側は処理を継続して終わるまで動いているという認識だったのですが

ある程度時間がたつと
上記のエラーで落ちる?

ということのような気がします。


2018年10月4日木曜日 11時57分11秒 UTC+9 masatakashibuya:

masatakashibuya

unread,
Oct 4, 2018, 3:56:06 AM10/4/18
to OpenTouryoProject
西野さん

何度もすみません。

よくわからなくなってきました。
タイムアウトの問題ではないような気がします。


2018年10月4日木曜日 16時27分38秒 UTC+9 masatakashibuya:

daisukenishino

unread,
Oct 4, 2018, 5:07:20 AM10/4/18
to OpenTouryoProject
渋谷さん

更に、ココに纏めてみましたが、WCFはクライアント設定のみで
このクライアント設定がサーバ設定に適用されるようです。

ただしサーバ側プログラムから設定する方法は用意されているようです。

あと、通信制御のpropsの文字列のタイムアウトは
WCFでは効きません(ASP.NET WSかASP.NET WEBAPIなら効く)

西野


2018年10月4日木曜日 16時56分06秒 UTC+9 masatakashibuya:
Reply all
Reply to author
Forward
0 new messages