المشاركات : 16
المواضيع 4
:
: 0
الإنتساب : Jul 2010
السلام عليكم
عندي لما يصل 1900 زبون متصل يحدث مشكل وهو virtual size يصير كبير حوالي 1.98 جيقا وبالتالي ما يزيد اي متصل اخر ويخرج ميساج يقول out of memory
المهم نبشت قوقل بحثا عن المشكلة ولم اجد حل
لاحضت ان كل متصل ياكل تقريبا 1 ميقا من الميموري :eek:
الاسئلة
- هل يمكن التحكم في ثريد كل زبون واعطائه مثلا 100 كيلوا كحد اقصى من الميموري

- هل مكون indy يحتمل مثلا اتصال 60000 متصل دفعة واحدة
-هل يوجد مكونات اخرى اقوى من indy ولا تاكل من الميموري بكثرة الزبائن بدي مثلا اوصل 30000 زبون هل يمكن لهذا المكون التعامل مع الامر ام فيه شيئ اخر
أتمنى ان لا اكون اثقلت عليكم بالاسئلة
المشاركات : 400
المواضيع 2
:
: 274
الإنتساب : Nov 2009
و عليكم السلام و رحمة الله
ليس لدي الخبرة للإجابة على أسئلتك, لذالك سأضيف سؤالا آخر :d
أليس لعتاد السرفر دخل بذلك (كمية الرام مثلا ) ؟
من قال حاد عن أصله أو قال مات فقد كذب
المشاركات : 16
المواضيع 4
:
: 0
الإنتساب : Jul 2010
h-farid كتب :و عليكم السلام و رحمة الله
ليس لدي الخبرة للإجابة على أسئلتك, لذالك سأضيف سؤالا آخر :d
أليس لعتاد السرفر دخل بذلك (كمية الرام مثلا ) ؟
يا اخي لما استعملت مكونات ServerSocket لم ياكل شيئ من الميموري لاكن تحدث مشاكل اخرى لم احاول حلها لاني كنت مهتم بحجم ما ياكله البرنامج كذلك جربت برنامج بالدوت نت ما اكل شيئ ايضا لاكني اطرح السؤال حول المكون الذي يقولون انه لا يوجد مثله الا وهو indy
:confused::confused::confused::confused:
المشاركات : 25
المواضيع 1
:
: 0
الإنتساب : Aug 2013
اعتقد الرام عندك 2 غيغا
كل زبون ياخذ 1 ميغا
وعندك 1900 زبون
وباقي مساحه 100 ميغا فقط للجهاز
وبلنسبه لمكون اخر لااعتقد يوجد مكون افضل من اندي
والحل ان تبرمج مكون بنفسك
بلنسبه لاسئلتك
1-لست متاكد لاكن اعتقد لايمكنك هذا
2- نعم في حال كان الميموري عندك كبير
3-لااعتقد يوجد مكون افضل
ارجع الى ServerSocket وحاول تحل المشكله
او اشتري ميموري بحجم اكبر مثلا اذا عندك 2 غيغا اشتري 4 غيغا
لن يفشل ابداا انسان يحاول ثم..... يحاول
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
تطبيقات 32 بت لن تستطيع استخدام أكبر من 2 جيجا رام حتى ولو كانت الرام 4 جيجا !
أمامك حلان :
أن تستخدم وينداوز نسخة 64 /32 بت و تشغل عليها تطبيقك 32 بت مع استخدام IMAGE_FILE_LARGE_ADDRESS_AWARE flag
ألق نظرة على هذا الرابط :
Olaf Hess كتب مقالة + مثال رائع لاستخدام 4 جيجا من الرام لتطبيقات 32 بت
كود :
http://cc.embarcadero.com/Item/24309
الحل الثاني أن تستخدم وينداوز 64 بت و تشغل عليه تطبيقك 64 بت :
الحل الثاني هو الأفضل .. لكون نسخ 64 تسمج باستعمال أكبر من 190 جيجا .
Open Your Source .. Open Your Mind
المشاركات : 16
المواضيع 4
:
: 0
الإنتساب : Jul 2010
يعني الحل ارفع الرامة واغير النضام يعني ليس هناك حل برمجي؟
عندي تطبيق بالدوت نت يتحمل 8000 متصل على بيئة 32 بيت

الدلفي يحتاج الرامة والدوت نت لا :confused:
تطبيق دوت نت في حوزتي تمكن من استقبال 8000 زبون واكل 350 ميقا من الميموري

اضن الخلل كله في فكرة كل زبون له ثريد منفصل والله اعلم
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
إقتباس :يعني الحل ارفع الرامة واغير النضام يعني ليس هناك حل برمجي؟؟؟؟؟؟؟؟؟؟؟؟
كما ذكرت سابقا ليس شرطا أن تغير النظام يمكن استخدام 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 لحجز المؤشرات الكبيرة .
Open Your Source .. Open Your Mind
كل من 1 user says قال شكرا ل SMP3 على المشاركة المفيدة1 user says Thank You to SMP3 for this post
• haniid
المشاركات : 16
المواضيع 4
:
: 0
الإنتساب : Jul 2010
نعم المتغيرات من نوع string
هل يوجد بديل يعني اعطيني متغيرات اخرى لا تاكل من الميموري
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
القيمة المحجوزة في الذاكرة من النوع string = طول النص (عدد بايتات النص)
في اليونيكود = (عدد بايتات النص) * 2 : (كل محرف ب 2 بايت)
ان كنت تستخدم نسخ دلفي تدعم اليونيكود فاستعمل النمط AnsiString (كل محرف ببايت)
Open Your Source .. Open Your Mind
المشاركات : 16
المواضيع 4
:
: 0
الإنتساب : Jul 2010
بارك الله فيك على الافادة يا غالي هل سبق ان برمجت برامج مثل هيك بمكون indy وكم وصل معك عدد الزبائن؟