গ্যানিকর্ন + এনজিনেক্স সহ দীর্ঘ সময় ধরে চলার অনুরোধ


8

আমি আমাদের জ্যাঙ্গো চালিত অ্যাপ্লিকেশনটির জন্য একটি ইন্টিগ্রেশন সার্ভার একসাথে রেখেছি। বৈশিষ্ট্যগুলির কয়েকটি এখনও পরীক্ষামূলক এবং ফলস্বরূপ দীর্ঘতর অনুরোধের ফলস্বরূপ।

আমি আপাতত দরিদ্র পারফরম্যান্সের সাথে ঠিক আছি তবে আমার একীভূত করতে সক্ষম হওয়া দরকার। যখনই আমরা এমন বৈশিষ্ট্যটি ব্যবহার করি যা দীর্ঘ অনুরোধের দিকে পরিচালিত করে, অ্যাপটি হ্যাং হয়ে যায় (প্রত্যাশা অনুযায়ী) এবং তারপরে, সম্ভবত দেড় মিনিট পরে, একটি '502 - ব্যাড গেটওয়ে' ফেরত দেয়। অ্যাপ্লিকেশন বাকি কাজ করে।

আমি গ্যানিকর্ন লগটি পরীক্ষা করেছিলাম এবং যখনই এটি ঘটে তখন আমি লাইনের মতো একটি লাইন পাই

2012-01-20 17:30:13 [23128] [DEBUG] GET /results/
2012-01-20 17:30:43 [23125] [ERROR] WORKER TIMEOUT (pid:23128)
Traceback (most recent call last):
  File "/home/demo/python_envs/frontend/lib/python2.6/site-packages/gunicorn/app/base.py", line 111, in run
    os.setpgrp()
OSError: [Errno 1] Operation not permitted

যাইহোক, এটি প্রকৃত কর্মীর সময়সীমা হওয়ার অনেক আগে ঘটেছিল, যা নিশ্চিত করার জন্য আমি 10 মিনিট স্থির করেছি। এখানে আপস্টার্ট স্ক্রিপ্টের অংশ যা গ্যানিকর্ন চালায়।

description "..."

start on runlevel [2345]
stop on runlevel [!2345]
#Send KILL after 5 seconds
kill timeout 5
respawn

env VENV="/path/to/a/virtual/env/"

#how to know the pid
pid file $VENV/run/guniconr-8080.pid

script
exec sudo -u demo $VENV/bin/gunicorn_django --preload --daemon -w 4 -t 600 --log-level debug --log-file $VENV/run/gunicorn-8080.log -p $VENV/run/gunicorn-8080.pid -b localhost:8080 /path/to/settings.py
end script

আমি গানিকর্ন সংস্করণ 0.13.4 চালাচ্ছি। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।

উত্তর:


5

502 Bad Gatewayমানে আপনার বন্দুকের কর্মী সময়সীমা শেষ is আপনি কমান্ডে --timeoutবিকল্প যোগ করতে পারেন gnuicorn। ডিফল্ট 30s হয়।

@ গ্রেগ-কে নোট হিসাবে, এনগিনেক্সের proxy_read_timeoutবিকল্পটি অন্য সময়সীমা নিয়ন্ত্রণ করে। আপনি যদি 504 Gateway Timeoutত্রুটি দেখতে পান তবে আপনি এই বিকল্পটি সামঞ্জস্য করতে পারেন।


আমি এই সম্পর্কে উদ্বিগ্ন হয়েছি যখন থেকে এটি হয়ে গেছে, তবে- -tআমি ইতিমধ্যে প্রশ্নটিতে যে বিকল্পটি দিয়েছিলাম তা একই নয় ?
ম্যাট লুঙ্গো

3

এটি আপনার এনগিনেক্স কনফিগারেশনের সমস্যা হতে পারে। আপনি প্রক্সি_ড্রেড_টাইমআউট মানটি কনফিগার করেছেন?

এই নির্দেশটি প্রক্সি সার্ভারের প্রতিক্রিয়ার জন্য পঠনের সময়সীমা সেট করে। এটি নির্ধারণ করে যে কোনও অনুরোধের প্রতিক্রিয়া পেতে nginx কতক্ষণ অপেক্ষা করবে। সময়সীমা পুরো প্রতিক্রিয়ার জন্য নয়, কেবল দুটি পাঠের অপারেশনের মধ্যে প্রতিষ্ঠিত।

সূত্র: http://wiki.nginx.org/HttpProxyModule#proxy_read_timeout


আমি কেবল উন্নয়নের জন্য বৃহত্তর / দ্রুত সার্ভারে চলে এসেছি ($$ :(), তবে এটি যদি আবার আসে তবে আমি আপনার পরামর্শটি পরীক্ষা করব!
ম্যাট লুঙ্গো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.