משיב מוביל
NettcpBinding wcf - איך לשפר את זמן הזיהוי של אירוע faulted

שאלה
-
שלום רב,
יש לי אפליקציה אשר מדברת עם שרת WCF באופן אסינכרוני - דרך NETTCPBINDING - כל זמן מסויים היא דוגמת את השרת ומביאה נתון מסוים.
בחרתי בחיבור NETTCPBINDING ע"מ לשמור על החיבור חי.
כעת, נרשמתי לאירוע Faulted, ע"מ לזהות אם היה ניתוק -בין האפליקציה לשרת, ושמתי לב שתמיד, זמן הזיהוי (הזמן שבו אירוע faulted מורם) הוא בסביבות 20 שניות ואני מעוניין לשפר את זמן הזיהוי.
חשבתי אולי דרך ההגדרות של הnetcpbinding אוכל לשפר את זמן הזיהוי -
ההגדרות ההתחלתיות:
<netTcpBinding> <binding name="NetTcpBindingConf" closeTimeout="00:00:05" openTimeout="00:00:05" sendTimeout="00:00:10" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="20" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="32" maxStringContentLength="5048576" maxArrayLength="50000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> <reliableSession ordered="true" inactivityTimeout="00:04:00" enabled="true"/> <security mode="Transport"> <transport clientCredentialType="None" protectionLevel="EncryptAndSign"/> <message clientCredentialType="Windows"/> </security> </binding> </netTcpBinding>
שיניתי ל:
<netTcpBinding> <binding name="NetTcpBindingConf" closeTimeout="00:00:05" openTimeout="00:00:05" sendTimeout="00:00:05" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="20" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="32" maxStringContentLength="5048576" maxArrayLength="50000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> <reliableSession ordered="true" inactivityTimeout="00:00:05" enabled="true"/> <security mode="Transport"> <transport clientCredentialType="None" protectionLevel="EncryptAndSign"/> <message clientCredentialType="Windows"/> </security> </binding> </netTcpBinding>
אולם זמן הזיהוי נותר בסביבות 20 שניות, האם יש למישהו עיצה או רעיון לשיפור הזמן?
תודה.
תשובות
-
תודה:) הגדרתי את ההגדרות הבאות:
inactivityTimeout="00:00:05",receiveTimeout="00:00:05",sendTimeout="00:00:05"
בקליינט ובסרבר, וזה שיפר את זמן הזיהוי.
- סומן כתשובה על-ידי DavidMichaeli יום חמישי 25 פברואר 2016 20:35
כל התגובות
-
* זה משחק חפש את ההבדלים?
תעזור לנו קצת ותפרט מה השינוי שביצעת והרבה יותר חשוב למה ביצעת אותו. למשל מה המשעות של שינוי timeout ולמה בדיוק אתה חושב שזה יכול להשפיע?
בקישור הבא יכול לעזור לך להבין מה המשמעות של כל פרמטר:
https://msdn.microsoft.com/en-us/library/ms731343%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396כדי לנטר בעיה או למטב אותה אתה צריך בדרך כלל לבצע שינוי אחד בכל פעם, ולא 30 שינויים שלא תדע מי השפיע (ואולי השפיעו הפוך) ...
1. האם אתה מתחבר לשירוךת מקומי או שירות מרוחק (במכונה אחרת) ?
NetTcpBinding נועד בעקרון ל cross-machine אבל אין מניעה לשימוש מקומי בעיקר בשלבי הפיתוח.תבדוק אם מדובר בזמן הקשור לתעבורה/התחברות (אתה יכול לנטר זמנים של אירועים שונים בלקוח ובשרת כדי להבין היכן "מבוזבז" הזמן)
Ronen Ariely
[Personal Site] [Blog] [Facebook] [Linkedin] -
תודה:) הגדרתי את ההגדרות הבאות:
inactivityTimeout="00:00:05",receiveTimeout="00:00:05",sendTimeout="00:00:05"
בקליינט ובסרבר, וזה שיפר את זמן הזיהוי.
- סומן כתשובה על-ידי DavidMichaeli יום חמישי 25 פברואר 2016 20:35
-
אהלן,
אם הבעיה נתרה אז אני מבקש לסגור את השרשור :-)
אם עדיין יש בעית המשך, א אנא פרט :-)
* הפרמטרים שרשמת כאן כולם קשורים לזמני timeout וזה לא אמור לעשות שינוי מהותי בזמן אלא אם יש לך מצבים של timeout ולכן זה יכול להצביע על בעיה.
Ronen Ariely
[Personal Site] [Blog] [Facebook] [Linkedin] -
-