بصمة ذاكرة OSQA Apache
-
27-09-2019 - |
سؤال
لديّ تطبيق OSQA (Python / Django Q & A) يخدم 8 مواقع مختلفة. المواقع كلها قيد التطوير ، وتتلقى الحد الأدنى من حركة المرور. الخادم هو خادم خاص افتراضي مع 512 ميغابايت من ذاكرة الوصول العشوائي.
يقدم Apache الصفحات الديناميكية فقط مع mod_wsgi خلف Nginx. لا يمكنني إيقاف استهلاك Apache المزيد والمزيد من الذاكرة مع كل طلب حتى يختنق الخادم.
لقد جربت معلمات التكوين دون حظ كبير لتقليل بصمة الذاكرة. مع معلمات mpm_prefork التالية في apache2.conf:
StartServers 2
MinSpareServers 1
MaxSpareServers 4
MaxClients 4
MaxRequestsPerChild 100
تبدأ عمليات Apache 2 باستخدام 4 ميغابايت وبعد الطلب الأول ، هناك 4 عمليات مع كل ما يقرب من 50 ميجابايت ومع كل طلب جديد تتسلق هذه العمليات الأربعة بشكل مطرد إلى ما يقرب من 200 ميجابايت لكل منهما.
أشعر أن هناك خطأ ما يحدث. أي اقتراحات موضع تقدير كبير.
المحلول
KeepAlive Off
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 3
SetEnvIf X-Forwarded-SSL on HTTPS=1
ThreadsPerChild 2
WSGIDaemonProcess osqaWSGI processes=2 python-path=/web/osqa_server:/web/osqa_server/lib/python2.6 threads=1 maximum-requests=550
WSGIProcessGroup osqaWSGI
ركض httperf ضد هذا مع 10000 زيارة متزامنة وما زالت قائمة.