بطيئة الأولي server بدء التشغيل عند استخدام Phusion الركاب و القضبان

StackOverflow https://stackoverflow.com/questions/853532

سؤال

إلى القفز على عربة الفرقة من Phusion الركاب الإعداد لدينا انطلاق خادم صغير القضبان التطبيق لاختبار الأشياء.

حتى الآن كانت لطيفة جدا للاستخدام, يجعل تركيب/تكوين ونشر تطبيقات نسيم.المشكلة الموقع نستخدمه لا تحصل على ضرب كثير من الأحيان يبدو أن إيقاف الملقمات في الخلفية.يعني عندما يذهب شخص ما إلى الموقع لديهم حقا الانتظار الطويل حتى يبدأ خادم جديد للتعامل مع الطلب.لقد خلال قراءة الوثائق ، حاول عدد قليل جدا من مختلفة مجموعة عمليات (الذكية/سمارت-lv2 وسائط ، passengeridletime الخ) لم نجد حلا حقيقيا.

بعد الحرث من خلال نتائج جوجل لا يمكننا حقا أن تجد معلومات مفيدة.حاليا لدينا وظيفة كرون الذي يجعل طلب كل ذلك في كثير من الأحيان في محاولة للحفاظ على الخوادم.

هو أي شخص آخر تعاني من هذه المشكلة و هل لديك أي نصيحة من أجل الإصلاح ؟

هل كانت مفيدة؟

المحلول

ما يحدث هو أن التطبيق الخاص بك و/أو ApplicationSpawners يتم إيقاف بسبب المهلة.أن عملية طلب جديد الركاب إلى بدء تشغيل نسخة جديدة من التطبيق الخاص بك, والتي يمكن أن تأخذ عدة ثواني حتى على جهاز سريع.لإصلاح المشكلة ، هناك عدد قليل من اباتشي التكوين الخيارات التي يمكنك استخدامها للحفاظ على التطبيق الخاص بك على قيد الحياة.

وهنا على وجه التحديد ما فعلته على الخوادم.على PassengerSpawnMethod و PassengerMaxPreloaderIdleTime هي خيارات التكوين الأكثر أهمية في الوضع الخاص بك.

# Speeds up spawn time tremendously -- if your app is compatible. 
# RMagick seems to be incompatible with smart spawning
# Older versions of Passenger called this RailsSpawnMethod
PassengerSpawnMethod smart

# Keep the application instances alive longer. Default is 300 (seconds)
PassengerPoolIdleTime 1000

# Keep the spawners alive, which speeds up spawning a new Application
# listener after a period of inactivity at the expense of memory.
# Older versions of Passenger called this RailsAppSpawnerIdleTime
PassengerMaxPreloaderIdleTime 0

# Just in case you're leaking memory, restart a listener 
# after processing 5000 requests
PassengerMaxRequests 5000

باستخدام "الذكية" تفريخ وضع إيقاف PassengerMaxPreloaderIdleTime الركاب سوف تبقى 1 نسخة من التطبيق الخاص بك في الذاكرة في كل مرة (بعد الطلب الأول بعد بدء أباتشي).الفردية Application المستمعين سوف يكون forkإد من هذه النسخة التي هي فائقة رخيصة العملية.يحدث ذلك بسرعة لا يمكنك معرفة ما إذا كان أو لم يكن التطبيق الخاص بك قد تفرخ المستمع.

إذا كان التطبيق غير متوافق مع الذكية التفريخ, أنصح حفظ كبير PassengerPoolIdleTime و ضرب موقع الويب الخاص بك بشكل دوري باستخدام الضفيرة و cronjob أو monit أو شيء لضمان المستمع يبقى على قيد الحياة.

على الركاب دليل المستخدم رهيبة المرجعية لهذه والمزيد من خيارات التكوين.

تحرير:إذا كان التطبيق غير متوافق مع الذكية التفريخ, هناك بعض خيارات جديدة التي هي لطيفة جدا

# Automatically hit your site when apache starts, so that you don't have to wait
# for the first request for passenger to "spin up" your application. This even
# helps when you have smart spawning enabled. 
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/

# the minimum number of application instances that must be kept around whenever 
# the application is first accessed or after passenger cleans up idle instances
# With this option, 3 application instances will ALWAYS be available after the
# first request, even after passenger cleans up idle ones
PassengerMinInstances 3

لذا ، إذا كنت الجمع بين PassengerPreStart و PassengerMinInstances الركاب سوف تدور 3 حالات على الفور بعد أباتشي الأحمال, و سوف تبقى دائما على الأقل 3 حالات حتى المستخدمين نادرا ما (إذا من أي وقت مضى) انظر تأخير.

أو إذا كنت تستخدم الذكية تفريخ (مستحسن) مع PassengerMaxPreloaderIdleTime 0 بالفعل, يمكنك إضافة PassengerPreStart للحصول على فائدة إضافية فورية بدء التشغيل.

وذلك بفضل العديد من الأبطال في phusion.nl!

نصائح أخرى

ومجرد طارئ هناك أي مستخدم الخادم إنجن إكس عثرة على هذا السؤال، فإن كلا من "PassengerMaxRequests 'والتوجيهات" PassengerStatThrottleRate "لا تترجم إلى إنجن إكس. ولكن الآخرون:

rails_spawn_method smart;
rails_app_spawner_idle_time 0;
rails_framework_spawner_idle_time 0;
passenger_pool_idle_time 1000;

وHTH!

وتم إهمال rails_spawn_method تحرير في الركاب 3 بدلا من استخدام

passenger_spawn_method smart; 

كل شيء آخر هو جيد فقط حتى الآن.

ويمكنك أيضا استخدام PassengerMinInstances:

http://www.modrails.com/documentation/Users٪ 20guide٪ 20Apache.html # PassengerMinInstances

ويمكن الجمع بين هذا مع PassengerPreStart

وRE:

# Additionally keep a copy of the Rails framework in memory. If you're 
# using multiple apps on the same version of Rails, this will speed up
# the creation of new RailsAppSpawners. This isn't necessary if you're
# only running one or 2 applications, or if your applications use
# different versions of Rails.
RailsFrameworkSpawnerIdleTime 0

ومجرد شيء لإضافة وقد يكون مفيدا.

وطريقة تفرخ الافتراضي في الإصدار الحالي هو "الذكية LV2"، الذي يتخطى البياضة الإطار، لذلك وضع ان مهلة إطار البياضة لا يكون لها تأثير على أي حال إلا إذا بوضوح تعيين طريقة تفرخ إلى "الذكية".

المصدر: http://groups.google.com/group/ phusion ركاب / browse_thread / موضوع / c21b8d17cdb073fd؟ كابلان = 1

إذا المضيف الخاص بك هو خادم مشترك، مثل الألغام، لا يمكنك تغيير الإعدادات وعالقون مع وظيفة كرون.

وكما أتيحت لي هذه المشكلة ولكن لم أكن قادرا على تغيير إعدادات الركاب لأنني لم يكن إذن الكتابة إلى هذا الملف. لقد وجدت أداة ( http://www.wekkars.com ) التي تحافظ على بلدي التطبيق الاستجابة بسرعة. ربما هذا يمكن أيضا أن يكون الحل بالنسبة لك.

والتحقق من إصدار الركاب. وقد RailsSpawnMethod ذلك <string> للإصدارات القديمة.

وإذا كان الأمر كذلك (إذا كنت أتذكر بشكل صحيح)، استبدال الركاب مع القضبان في جميع التوجيهات التكوين أو البحث عن مستندات الركاب القديمة لمزيد من التفاصيل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top