دعك من روبي فإنها لا تدخل في شيء إلا وتخربه بعد فوات الاوان ولا يمكنك الخروج إلا بثمن مرتفع. إطار العمل rails رائع ويحتوي أنماط برمجية رائعة جدا (يمكنك تعلمها وتطبيقها في أي لغة).
من مشاكل لغة روبي أن مجتمعها لا يهتم بالتوافقية فهو يعمل لغات مختلفة في الإصدارات المختلفة ويسميها روبي فقط بطريقة لا تسمح بثبيتهما معا إلى عبر rvm قارن ذلك ببايثون الذي قالوا أن بايثون 3 لغة مختلفة تماما بحيث يمكنك كما في أغلب التوزيعات تثبيت بايثون 2 و بايثون 3 على نفس النظام من خلال مدير الحزم.
من المشاكل الأخرى أن خوادم لغة روبي للإصدار ruby 1.9.x لا تدعم threads بل تعمل fork بمعنى حتى أتمكن من معالجة 100 طلب دفعة واحدة أحتاج عمل 100 process (سواء fork أو prefork) كل واحدة تحجز كامل الذاكرة.
وقت الاستهلالي لتحميل تطبيقات rails مبالغ فيه فالوقت بين تشغيل الخدام (أو إعادة تشغيل الخادم) وأول قبول ناجح لأول طلب من الطبيعي أن يكون 30 ثانية وقد يصل إلى 3 دقائق في التطبيقات الكبيرة. (في حين أن الوقت بين تشغيل جانغو وقبول أول طلب بالكاد يصل إلى ثواني)
ومن المشاكل الأخرى هي الاستهلاك الفلكي المبالغ فيه للذاكرة (مثلا هناك تطبيق مشهور اسمه puppet يعمل على إعداد الخوادم عند تجربة تركيب openstack/packstack وهو من أعقد المشاريع في العالم ويتضمن تشغيل وإعداد Galera MariaDB Cluster و Rabbit Message Queue و عدد كبير من خوادم openstack الشاهد في القضية أن التجربة فشلت على 2 غيغا لأن روبي في puppet إلتهمت كل الذاكرة فقط في قولبة ملفات الإعدادات مع أنها مهمة تافهة والمفترض أن تفشل لأن كل تلك المكونات الكثيرة تستهلك ذاكرة)
بدأت تعلم اليوم البارحة ولكن لا أدري، تبدو لي غير عملية عند كبر المشروع وكبر عدد الزوار، ربما السبب هو عملها على thread واحد فحسب مما قد يسبب مشاكل عند تضخم الطلب عليها
أنا تعلمتها من أجل انشاء تطبيقات سطح مكتب وتبدو لي مناسبة جدا في تلك الحالة حيث لديك مستخدم واحد فحسب لذا لا مشكلة إطلاقا
أما موضوع ال thread الواحد فهذا لأن هناك non blocking io أو ما يسمى green threads وهذا شيء جيد. أنا مشكلتي مع جافاسكربت في مكان آخر لا علاقة له بالأداء والتحمل.
خارج السياق. لا اظن انها تفعل شيء سوى مكياج بموضة مترو لمحبي سطح مكتب ويندوز 8. الأمور تسير الآن بالعكس فسطح المكتب يموت. ناهيك اني لا احب مترو ولا ويندوز. مترو نظام فاشل على سطح المكتب والجوال معا.
المفروض أن المشكلة threads محلولة في روبي 2. مشكلة الذاكرة مشهورة جدا والخوادم الجيدة إما تعد لتقتل ال process بعد كذا طلب لتحرير الذاكرة او تستدعي GC وكلاهما عمليات مكلفة. اقتبس
Adding threading support in Ruby 1.8 is out of discussion.
ايضا
By default the memory management of this plugin is very aggressive (as Ruby can easily devour memory like it was going out of fashion). The Ruby garbage
collector is invoked after every request by default.
Starting from 4.0, Rails support multiple threads (only for ruby 2.0):
والموضوع مشهور ولا علاقة له بخادم uWSGI يمكنك ان تقرأ مثلا مدونة github حيث شرحوا كيف واجهوا تلك المشاكل في روبي مستخدمين عدة unicorns علما ان عنق الزجاجة في github والطحن من المفترض ان لا يكون في روبي بل هو في اداة git وال disk io إلا انهم احتاجوا إلى تشغيل عدد كبير جدا من الخوادم لروبي.
مجتمع لمناقشة وتبادل الخبرات حول تطوير الويب. ناقش أحدث التقنيات، اللغات، والأدوات في عالم تطوير المواقع والتطبيقات. شارك مشاريعك، اسأل عن نصائح، وتعاون مع مطورين محترفين وهواة.
التعليقات