وصف إعدادات TCP/IP التي قد تحتاج إلى ضبط عندما يتم تعطيل تجمع الاتصال SQL Server

ملخص

عند استخدام برنامج تشغيل SQL Server ODBC أو SQL Server موفر OLE DB الموفر المدار System.Data.SqlClient، يمكنك تعطيل اتصال تجمع باستخدام واجهات برمجة التطبيقات الخاصة (APIs). عندما تقوم بتعطيل تجمع، يمكن زيادة الضغط على مكتبة SQL Server الأساسية على شبكة الاتصال إذا كان التطبيق الخاص بك استمرار فتح وإغلاق اتصالات. توضح هذه المقالة إعدادات TCP/IP معينة قد تضطر إلى تعديل هذه الظروف.

مزيد من المعلومات

يمكن أن يؤدي إيقاف تشغيل تجميع SQL Server شبكة برنامج التشغيل الأساسي لسرعة فتح وإغلاق اتصالات مأخذ التوصيل جديدة إلى الكمبيوتر الذي يستخدم SQL Server. قد تضطر إلى تغيير إعدادات مأخذ التوصيل TCP/IP الافتراضية لنظام التشغيل وجهاز الكمبيوتر الذي يستخدم SQL Server للتعامل مع ارتفاع مستويات الإجهاد.

لاحظ أن تناقش هذه المقالة فقط الإعدادات التي تؤثر على مكتبة شبكة SQL Server عند استخدام بروتوكول TCP/IP. يؤدي إيقاف تشغيل تجمع يمكن أيضا أن يسبب مشاكل متعلقة بالإجهاد ببروتوكولات SQL Server أخرى مثل أنابيب الاتصال المسماة، ولكن هذه المادة لا يناقش هذا الموضوع. هذه المقالة مخصصة للمستخدمين المتقدمين فقط. إذا لم تكن تعرف المواضيع الموجودة في هذه المقالة، توصي Microsoft بأن ترى بقراءة كتاب حول مأخذ التوصيل TCP/IP.

لاحظ أن Microsoft توصي بشدة دائماً استخدام تجمع مع برامج تشغيل SQL Server. استخدام تجمع كبير بتحسين الأداء العام على كل من العميل والخادم SQL عند استخدام برامج تشغيل SQL Server. استخدام تجمع أيضا بقدر كبير إلى تقليل حركة مرور الشبكة لجهاز الكمبيوتر الذي يستخدم SQL Server. على سبيل المثال، استخدام اختبار نموذج يستخدم ملقم SQL 20.000 الاتصال تفتح وتغلق بتمكين تجميع حوالي 160 حزم شبكة الاتصال TCP/IP بإجمالي 23,520 بايت من نشاط شبكة الاتصال. مع تجمع تعطيل، إنشاء نفس الاختبار نموذج 225,129 حزم شبكة الاتصال TCP/IP بإجمالي 27,209,622 بايت من نشاط شبكة الاتصال.

لاحظ أنه عند ظهور هذه المتصلة بالإجهاد TCP/IP مأخذ التوصيل مشاكل مع مكتبات شبكة SQL Server، قد تتلقى واحد أو أكثر من رسائل الخطأ التالية عند محاولة الاتصال بجهاز كمبيوتر يستخدم SQL Server:

ملقم SQL غير موجود أو تم رفض الوصول
انتهت المهلة
خطأ عام في شبكة الاتصال
موفر TCP: واحد فقط لكل عنوان مأخذ توصيل (عنوان بروتوكول/شبكة اتصال/منفذ) يسمح عادة باستخدام.
لاحظ أنه يمكنك أيضا تلقي رسائل خطأ معينة هذه عندما تحدث مشاكل أخرى في SQL Server؛ على سبيل المثال، قد تتلقى رسائل الخطأ هذه في حالة إيقاف تشغيل الكمبيوتر البعيد الذي يقوم بتشغيل SQL Server، إذا كان الكمبيوتر البعيد الذي يقوم بتشغيل SQL Server لا يصغي إلى مأخذ التوصيل TCP/IP على الإطلاق، إذا ما تم كسر اتصالات شبكة الاتصال للكمبيوتر الذي يستخدم SQL Server لأنه سحب كبل شبكة الاتصال، أو إذا كنت تواجه مشاكل في تحليل DNS. بشكل أساسي أي شيء يمكن أن يسبب فشل فتح مأخذ توصيل TCP/IP للكمبيوتر الذي يستخدم SQL Server العميل يمكن أن يسبب رسائل الخطأ. ومع ذلك، مع مشكلة مأخذ المتعلقة بالإجهاد، تحدث المشكلة بشكل متقطع لارتفاع الضغط ويندرج. تشغيل الكمبيوتر للساعات التي ليست بها أخطاء، ثم تحدث مرة واحدة أو مرتين، والكمبيوتر الخطأ ثم تعمل لعدة ساعات إضافية مع عدم وجود أخطاء. أيضا، عند وجود هذه المشكلة، عام الاتصال ب SQL Server يعمل الفورية واحد، فشل التالية، ثم يعمل الفورية التالي مرة أخرى. وبعبارة أخرى، المسائل المتصلة بالإجهاد مأخذ التوصيل عادة ما تحدث بين حين وآخر، ولكن الحقيقي مشكلات الاتصال الشبكي مع SQL Server عادة لا تحدث بصورة متقطعة.

المتصلة بالإجهاد قضيتين رئيسيتين تحدث عادة عند تعطيل تجمع أثناء استخدام بروتوكول TCP/IP ملقم SQL: قد نفدت منافذ المجهول على جهاز الكمبيوتر العميل، أو قد يتجاوز الإعداد الافتراضي وينسوكليستينباكلوج على الكمبيوتر الذي يستخدم SQL Server.


للحصول على معلومات إضافية حول المنافذ المجهول، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

319502 PRB: 'وسايدريسينوسي' رسالة خطأ عند محاولة الاتصال عبر منفذ مجهولة بعد زيادة حد الاتصال IMAP

ضبط إعدادات MaxUserPort وتكبتيميدوايتديلاي

لاحظ أن إعدادات MaxUserPort و تكبتيميدوايتديلاي قابلة للتطبيق فقط على جهاز كمبيوتر عميل سرعة فتح وإغلاق اتصالات إلى كمبيوتر بعيد يقوم بتشغيل SQL Server والذي لا يستخدم تجمع الاتصالات. على سبيل المثال، تعتبر قابلة للتطبيق على خادم خدمات معلومات إنترنت (IIS) التي تقوم بخدمة عدد كبير من طلبات HTTP الواردة والتي يتم فتح وإغلاق اتصالات إلى كمبيوتر بعيد يعمل بنظام التشغيل SQL Server والتي تستخدم بروتوكول TCP/IP مع تجمع تعطيل هذه الإعدادات. إذا تم تمكين تجمع، لم تكن لضبط إعدادات MaxUserPort و تكبتيميدوايتديلاي .

عند استخدام بروتوكول TCP/IP لفتح اتصال بجهاز كمبيوتر يستخدم SQL Server، مكتبة شبكة SQL Server الأساسية فتح مأخذ توصيل TCP/IP للكمبيوتر الذي يستخدم SQL Server. عند فتح هذا المآخذ، عدم تمكين مكتبة شبكة SQL Server خيار مأخذ التوصيل TCP/IP SO_REUSEADDR . لمزيد من المعلومات حول إعداد مأخذ التوصيل SO_REUSEADDR ، راجع الموضوع "Setsockopt" في شبكة مطوري Microsoft (MSDN).


لاحظ أن مكتبة شبكة SQL Server على وجه التحديد لا تمكن خيار مأخذ التوصيل SO_REUSEADDR TCP/IP لأسباب أمنية. عند تمكين SO_REUSEADDR ، مستخدم ضار يمكن يخطفون منفذ عميل إلى ملقم SQL وبيانات الاعتماد التي يوفر العميل الوصول إلى الكمبيوتر الذي يستخدم SQL Server. بشكل افتراضي، لأن مكتبة شبكة SQL Server تمكين خيار مأخذ التوصيل SO_REUSEADDR ، كلما قمت بفتح وإغلاق مأخذ توصيل خلال مكتبة شبكة SQL Server على الجهاز العميل، يدخل مأخذ التوصيل حالة TIME_WAIT لأربع دقائق. إذا كنت سرعة فتح وإغلاق اتصالات SQL Server عبر TCP/IP مع تجمع تعطيل، تكون سرعة فتح وإغلاق مأخذ التوصيل TCP/IP. وبعبارة أخرى، كل اتصال SQL Server على مأخذ توصيل tcp/واحد. إذا كانت سرعة فتح وإغلاق مأخذ توصيل 4000 في أقل من أربع دقائق، سوف تصل إلى إعداد الحد الأقصى الافتراضي لمنافذ العميل مجهول، وتفشل محاولات اتصال مأخذ التوصيل الجديدة حتى المجموعة الحالية من مأخذ التوصيل TIME_WAIT انقضت مهلة.

في جهة العميل، قد يلزم زيادة إعدادات MaxUserPort و تكبتيميدوايتديلاي التي تمت مناقشتها في Q319502 عند تعطيل تجمع. يتم تحديد إعدادات هذه القيم باتصال SQL Server عدد تحدث فتح وإغلاق من جانب العميل. يمكنك فحص عدد المنافذ العميل الموجودة في حالة TIME_WAIT باستخدام أداة Netstat على جهاز الكمبيوتر العميل. تشغيل أداة Netstat علامة ن كما يلي، وحساب عدد مأخذ توصيل العميل إلى عنوان IP لملقم SQL الخاصة بك في حالة TIME_WAIT. في هذا المثال، 10.10.10.20 هو عنوان IP للكمبيوتر البعيد الذي يقوم بتشغيل SQL Server وعنوان IP لكمبيوتر العميل هو 10.10.10.10 وثلاثة تأسيس اتصالات اثنين والاتصالات الموجودة في حالة TIME_WAIT:

C:\>netstat -n
Active Connections

Proto Local Address Foreign Address State
TCP 10.10.10.10:2000 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2001 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2002 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2003 10.10.10.20:1433 TIME_WAIT
TCP 10.10.10.10:2004 10.10.10.20:1433 TIME_WAIT

إذا شغلت netstat n وتشاهد قريبة من 4000 اتصالات IP عنوان الكمبيوتر الهدف الذي يقوم بتشغيل SQL Server في حالة TIME_WAIT، تقوم كل من زيادة MaxUserPort الإعداد الافتراضي وتقليل إعداد تكبتيميدوايتديلاي بحيث لا تقوم بتشغيل منافذ العميل مجهول. على سبيل المثال، يمكنك تعيين إعداد MaxUserPort إلى 20000 وتعيين إعداد تكبتيميدوايتديلاي إلى 30. إعداد تكبتيميدوايتديلاي أقل يعني أن تنتظر مأخذ التوصيل في حالة TIME_WAIT لوقت أقل. يعني إعداد MaxUserPort أعلى يمكن أن يكون أكثر من مأخذ التوصيل في الحالة time_wait.

لاحظ أنه إذا قمت بضبط الإعداد MaxUserPort أو تكبتيميدوايتديلاي ، يجب إعادة تشغيل Microsoft Windows ليصبح الإعداد الجديد نافذ المفعول. الإعدادات MaxUserPort وتكبتيميدوايتديلاي أي جهاز كمبيوتر العميل التحدث إلى كمبيوتر الذي يقوم بتشغيل SQL Server عبر مأخذ توصيل TCP/IP. هذه الإعدادات لا يترتب أي حالة يتم تعيينها على الكمبيوتر الذي يستخدم SQL Server إلا إذا كنت ترغب بجعل اتصالات مأخذ التوصيل TCP/IP المحلية للكمبيوتر الذي يستخدم SQL Server.

ملاحظة: إذا قمت بضبط الإعداد MaxUserPort ، نوصي بحجز منفذ 1434 للاستخدام عن طريق خدمة مستعرض SQL Server (sqlbrowser.exe). لمزيد من المعلومات حول كيفية القيام بذلك، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

812873 كيفية حجز نطاق من المنافذ المؤقتة على جهاز كمبيوتر يقوم بتشغيل Windows Server 2003 أو Windows 2000 Server

ضبط إعداد وينسوكليستينباكلوج

لمزيد من المعلومات حول إعداد هذا التسجيل الخاصة ب SQL Server، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

154628 INF: تسجيل SQL 17832 مع عدة طلبات الاتصال TCP\IP
مكتبة شبكة SQL Server بالإصغاء مأخذ التوصيل TCP/IP، يستخدم مكتبة شبكة SQL Server الإصغاء Winsock API. المعلمة الثانية الاستماع API هو تراكم المسموح بها لمآخذ التوصيل. تراكم هذا يمثل الحد الأقصى لطول قائمة الانتظار للاتصالات لوحدة الإصغاء المعلقة. عندما يتجاوز طول قائمة الانتظار هذا الحد الأقصى للطول، يرفض مكتبة شبكة خادم SQL مباشرة أكثر من محاولات الاتصال بمأخذ التوصيل TCP/IP. بالإضافة إلى ذلك، يرسل مكتبة شبكة SQL Server حزمة ACK + إعادة تعيين.

يستخدم SQL Server 2000 الافتراضي الاستماع تراكم إعداد 5. وهذا يعني أن الكمبيوتر الذي يستخدم SQL Server بتمرير القيمة 5 إلى معامل تراكم الاستماع Winsock API عند إعداد API الاستماع المواضيع الاستماع بروتوكول TCP/IP على جهاز الكمبيوتر الذي يستخدم SQL Server. يمكنك تعديل مفتاح التسجيل وينسوكليستينباكلوج لتعيين قيمة مختلفة لتمريرها لهذه المعلمة. البدء في SQL Server 2005، مكتبة الشبكة تمرير قيمة سوماكسكون كإعداد تراكم الاستماع API. سوماكسكون يسمح موفر Winsock لتعيين الحد الأقصى قيمة معقولة لهذا الإعداد. لذلك، مفتاح التسجيل وينسوكليستينباكلوج لم تعد تستخدم أو المطلوبة في SQL Server 2005.

تراكم إعداد يعمل كما يلي: افترض أن يصغي بخدمة إجبارية للطلبات الواردة من مأخذ التوصيل TCP/IP. إذا تم تعيين الإعداد المتأخرة إلى 5 ويتم استمرار تدفق العديد من طلبات اتصال مأخذ التوصيل في الخدمة قد يتعذر للاستجابة للطلبات الواردة بالسرعة التي وصلت. عند هذه النقطة، طبقة مأخذ التوصيل TCP/IP قوائم الانتظار هذه الطلبات الواردة في قائمة انتظار تراكم، ويمكن سحب الطلبات من قائمة الانتظار هذه الخدمة ومعالجة طلب اتصال مأخذ التوصيل الواردة فيما بعد. بعد امتلاء قائمة الانتظار، طبقة مأخذ التوصيل TCP/IP رفض أية طلبات إضافية مأخذ عليها عن طريق إرسال حزمة ACK + إعادة تعيين إلى العميل مباشرة. زيادة زيادة حجم قائمة انتظار تراكم العدد انتظار اتصال مأخذ توصيل طلبات أن طبقة مأخذ التوصيل TCP/IP قوائم الانتظار قبل أن يتم رفض طلبات.

لاحظ أن الإعداد وينسوكليستينباكلوج الخاص ب SQL Server. يحاول ملقم SQL لقراءة إعداد هذا السجل عند بدء تشغيل خدمة SQL Server. إذا كان الإعداد غير موجود، يتم استخدام الافتراضي 5. في حالة وجود إعداد التسجيل، يقرأ الإعداد SQL Server ويستخدم القيمة التي تم توفيرها كما يسمى الإعداد تراكم عند الاستماع WinSock API كما يتم تعيين TCP/IP مأخذ توصيل الإصغاء مؤشرات الترابط داخل SQL Server.

لتحديد إذا كنت تشغل في هذه المشكلة، يمكنك تشغيل تتبع "مراقب شبكة الاتصال" على الكمبيوتر الذي يستخدم SQL Server أو العميل وابحث عن طلبات الاتصال مأخذ التوصيل التي تم رفضها مباشرة مع ACK + إعادة تعيين. في حالة فحص حزم TCP/IP في "مراقبة الشبكة"، راجع حزمة كالتالي عند حدوث هذه المشكلة:

Frame: Base frame propertiesETHERNET:  EType = Internet IP (IPv4) 
IP: Protocol = TCP - Transmission Control; Packet ID = 40530; Total IP Length = 40; Options = No Options
TCP: Control Bits: .A.R.., len: 0, seq: 0-0, ack:3409265780, win: 0, src: 1433 dst: 4364
TCP: Source Port = 0x0599
TCP: Destination Port = 0x110C
TCP: Sequence Number = 0 (0x0)
TCP: Acknowledgement Number = 3409265780 (0xCB354474)
TCP: Data Offset = 20 bytes
TCP: Flags = 0x14 : .A.R..
TCP: ..0..... = No urgent data
TCP: ...1.... = Acknowledgement field significant
TCP: ....0... = No Push function
TCP: .....1.. = Reset the connection
TCP: ......0. = No Synchronize
TCP: .......0 = Not the end of the data
TCP: Window = 0 (0x0)
TCP: Checksum = 0xF1E7
TCP: Urgent Pointer = 0 (0x0)

لاحظ أن المنفذ المصدر هو 0x599 أو 1433 بالأرقام العشرية. وهذا يعني أن يأتي الحزمة من كمبيوتر نموذجي الذي يقوم بتشغيل SQL Server والذي يقوم بتشغيل المنفذ الافتراضي من 1433. لاحظ أيضا تعيين دلالة حقل الإعلام وعلامات إعادة تعيين الاتصال . إذا كنت معتاداً على تصفية عملية تتبع "مراقب شبكة الاتصال"، يمكنك تصفية القيمة إعلام TCP ب 0x14 الست عشري مشاهدة الحزم ACK + إعادة تعيين في تتبع "مراقبة شبكة الاتصال".

لاحظ أنه يمكنك أيضا مشاهدة الحزم ACK + إعادة تعيين مشابهة إذا كان جهاز الكمبيوتر الذي يستخدم SQL Server ليست قيد التشغيل على الإطلاق أو إذا كان الكمبيوتر الذي يستخدم SQL Server لا يصغي إلى بروتوكول TCP/IP، ذا رؤية حزم ACK + إعادة التعيين غير محددة التأكيد كنت تواجه هذه المشكلة. إذا وينسوكليستينباكلوج منخفضا جداً، اتصال بعض محاولات تلقي قبول حزم وتلقى بعض اتصالات مباشرة حزم ACK + إعادة التعيين في نفس الإطار الزمني.

لاحظ أنه في حالات نادرة، قد تضطر إلى ضبط هذا الإعداد حتى إذا تم تمكين تجمع على أجهزة الكمبيوتر العميلة. على سبيل المثال، إذا كان العديد من أجهزة الكمبيوتر العميلة تتحدث إلى جهاز كمبيوتر واحد يستخدم SQL Server، قد تحدث عدد كبير من محاولات الاتصال الوارد المتزامنة في أي وقت معين حتى إذا تم تمكين تجمع.

ملاحظة: إذا قمت بضبط الإعداد وينسوكليستينباكلوج ، لم تكن إعادة تشغيل Windows لهذا الإعداد نافذ المفعول. فقط إيقاف وإعادة تشغيل خدمة SQL Server للإعداد ساري المفعول. يتم إعداد التسجيل وينسوكليستينباكلوج للكمبيوتر الذي يستخدم SQL Server فقط. أنه ليس لديه أي تأثير على أي كمبيوتر عميل التحدث إلى SQL Server.
خصائص

رقم الموضوع: 328476 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات