![]() |
|
كم من زبون يتحمله indyserver - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كم من زبون يتحمله indyserver (/showthread.php?tid=5493) الصفحات:
1
2
|
كم من زبون يتحمله indyserver - kakarotte - 28-08-2013 السلام عليكم عندي لما يصل 1900 زبون متصل يحدث مشكل وهو virtual size يصير كبير حوالي 1.98 جيقا وبالتالي ما يزيد اي متصل اخر ويخرج ميساج يقول out of memory المهم نبشت قوقل بحثا عن المشكلة ولم اجد حل لاحضت ان كل متصل ياكل تقريبا 1 ميقا من الميموري :eek: الاسئلة - هل يمكن التحكم في ثريد كل زبون واعطائه مثلا 100 كيلوا كحد اقصى من الميموري ![]() - هل مكون indy يحتمل مثلا اتصال 60000 متصل دفعة واحدة -هل يوجد مكونات اخرى اقوى من indy ولا تاكل من الميموري بكثرة الزبائن بدي مثلا اوصل 30000 زبون هل يمكن لهذا المكون التعامل مع الامر ام فيه شيئ اخر أتمنى ان لا اكون اثقلت عليكم بالاسئلة
كم من زبون يتحمله indyserver - h-farid - 29-08-2013 و عليكم السلام و رحمة الله ليس لدي الخبرة للإجابة على أسئلتك, لذالك سأضيف سؤالا آخر :d أليس لعتاد السرفر دخل بذلك (كمية الرام مثلا ) ؟ كم من زبون يتحمله indyserver - kakarotte - 29-08-2013 h-farid كتب :و عليكم السلام و رحمة الله يا اخي لما استعملت مكونات ServerSocket لم ياكل شيئ من الميموري لاكن تحدث مشاكل اخرى لم احاول حلها لاني كنت مهتم بحجم ما ياكله البرنامج كذلك جربت برنامج بالدوت نت ما اكل شيئ ايضا لاكني اطرح السؤال حول المكون الذي يقولون انه لا يوجد مثله الا وهو indy :confused::confused::confused::confused: كم من زبون يتحمله indyserver - mariio - 29-08-2013 اعتقد الرام عندك 2 غيغا كل زبون ياخذ 1 ميغا وعندك 1900 زبون وباقي مساحه 100 ميغا فقط للجهاز وبلنسبه لمكون اخر لااعتقد يوجد مكون افضل من اندي والحل ان تبرمج مكون بنفسك بلنسبه لاسئلتك 1-لست متاكد لاكن اعتقد لايمكنك هذا 2- نعم في حال كان الميموري عندك كبير 3-لااعتقد يوجد مكون افضل ارجع الى ServerSocket وحاول تحل المشكله او اشتري ميموري بحجم اكبر مثلا اذا عندك 2 غيغا اشتري 4 غيغا كم من زبون يتحمله indyserver - SMP3 - 29-08-2013 تطبيقات 32 بت لن تستطيع استخدام أكبر من 2 جيجا رام حتى ولو كانت الرام 4 جيجا ! أمامك حلان : أن تستخدم وينداوز نسخة 64 /32 بت و تشغل عليها تطبيقك 32 بت مع استخدام IMAGE_FILE_LARGE_ADDRESS_AWARE flag ألق نظرة على هذا الرابط : Olaf Hess كتب مقالة + مثال رائع لاستخدام 4 جيجا من الرام لتطبيقات 32 بت كود : http://cc.embarcadero.com/Item/24309الحل الثاني هو الأفضل .. لكون نسخ 64 تسمج باستعمال أكبر من 190 جيجا . كم من زبون يتحمله indyserver - kakarotte - 29-08-2013 يعني الحل ارفع الرامة واغير النضام يعني ليس هناك حل برمجي؟ عندي تطبيق بالدوت نت يتحمل 8000 متصل على بيئة 32 بيت ![]() الدلفي يحتاج الرامة والدوت نت لا :confused: تطبيق دوت نت في حوزتي تمكن من استقبال 8000 زبون واكل 350 ميقا من الميموري ![]() اضن الخلل كله في فكرة كل زبون له ثريد منفصل والله اعلم كم من زبون يتحمله indyserver - SMP3 - 30-08-2013 إقتباس :يعني الحل ارفع الرامة واغير النضام يعني ليس هناك حل برمجي؟؟؟؟؟؟؟؟؟؟؟؟كما ذكرت سابقا ليس شرطا أن تغير النظام يمكن استخدام 3 جيجا على نظام 32 بت بتحديد IMAGE_FILE_LARGE_ADDRESS_AWARE flag لكن سيكون من الأفضل أن تقوم بتحويل النظام و التطبيق الى 64 بت (لن تواجه أي مشاكل و يمكن استيعاب أكبر من 190 جيجا ) إقتباس :عندي تطبيق بالدوت نت يتحمل 8000 متصل على بيئة 32 بيتهناك عدة عوامل : نوع قاعدة البيانات و نوع البيانات في حد ذاتها (string , char, integer) العوامل مختلفة : بالتأكيد ستجد تطبيق دلفي يستوعب 9000 في حين تجد تطبيق آخر يستوعب 1000 فقط على نفس الجهاز السبب : يعود السبب الى اختلاف نوع البيانات و اختلاف حجمها : مثلا في تطبيق الذي يستوعب 9000 ممكن تكون طبيعة المتغيرات كلها integer (هذا أمر بعيد عن الواقع لكنه مثال فقط) أما التطبيق الثاني فكل البيانات عبارة عن string .. باختصار : النوع string يستهلك الكثير من الرام مقارنة مع النوع integer الذي يستهلك 4 بايت فقط . يعني يمكن يكون التطبيق الذي يحمل 8000 متصل يستخدم عدد قليل من النوع string في الجداول . بعض النصائح : يجب عليك أن تقوم بمراقبة ال MemoryLeaks : قم بتحرير أي مؤشر أو مكون لم تعد بحاجة له حتى تتمكت من استخدام مساجة الذاكرة الخاصة به . راقب دائما MemoryLeaks : كود : ReportMemoryLeaksOnShutdown:=True;-استخدم ال Heap بدل ال Stack لحجز المؤشرات الكبيرة . كم من زبون يتحمله indyserver - kakarotte - 30-08-2013 نعم المتغيرات من نوع string هل يوجد بديل يعني اعطيني متغيرات اخرى لا تاكل من الميموري
كم من زبون يتحمله indyserver - SMP3 - 30-08-2013 القيمة المحجوزة في الذاكرة من النوع string = طول النص (عدد بايتات النص) في اليونيكود = (عدد بايتات النص) * 2 : (كل محرف ب 2 بايت) ان كنت تستخدم نسخ دلفي تدعم اليونيكود فاستعمل النمط AnsiString (كل محرف ببايت) كم من زبون يتحمله indyserver - kakarotte - 30-08-2013 بارك الله فيك على الافادة يا غالي هل سبق ان برمجت برامج مثل هيك بمكون indy وكم وصل معك عدد الزبائن؟ |