স্কিপি ইনস্টল করার পরে অ-প্রতিক্রিয়াশীল অ্যাপাচি + Mod_wsgi gi


10

আমি বর্তমানে অ্যাপাচি ২.২.১৫ এবং মোড_উজি ৩.২ সহ সেন্টোস 6.৪ সার্ভার চালাচ্ছি। সার্ভারটি জ্যাঙ্গো-ভিত্তিক সাইটটি হোস্ট করছে (জাঙ্গো 1.5.1.1, পাইথন 2.6.6)। আমি পিপের মাধ্যমে স্কিপি 0.12.0 ইনস্টল না করা পর্যন্ত সবকিছু ঠিকঠাক চলছিল। এখন, আমি যখন জ্যাঙ্গো অ্যাপ্লিকেশনটি লোড করার চেষ্টা করি তখন সার্ভারটি কোনও প্রতিক্রিয়া জানায় না এবং দেখা যায় যে শিশু httpd প্রসেসগুলি হ্যাং হয়ে গেছে। আমার লগগুলি (/ var / লগগুলি / httpd / ত্রুটি_লগ, আমার vhost ত্রুটি.লগ এবং আমার সিস্টেম লগগুলি) অনুসন্ধান করে কোনও ত্রুটি পাওয়া যায় না।

আমি যদি আমার মডেলগুলি ইত্যাদি লোড করি তবে জ্যাঞ্জো ম্যানেজ.পি শেলের মাধ্যমে, সমস্ত কিছু ঠিকঠাক কাজ করে, যা আমাকে বিশ্বাস করে যে এটি একটি মোড_উইজি ইস্যু।

এটি কীভাবে সমস্যা সমাধান শুরু করবেন তা নিয়ে কোনও চিন্তাভাবনা?

উত্তর:


22

পাইথনের কয়েকটি তৃতীয় পক্ষের প্যাকেজ যা সি এক্সটেনশান মডিউলগুলি ব্যবহার করে এবং এতে স্কিপি এবং নপি রয়েছে, কেবল পাইথনের মূল ইন্টারপ্রেটারে কাজ করবে এবং ডিফল্টরূপে ব্যবহারকারীর পরিবর্তে মোড_উইজি হিসাবে সাব-ইন্টারপ্রেটারে ব্যবহার করা যাবে না। ফলাফল থ্রেড অচলাবস্থা, ভুল আচরণ বা ক্রাশ ক্রাশ হতে পারে। এগুলিতে বিস্তারিত:

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

কাজটি হ'ল ডাব্লুএসজিআই অ্যাপ্লিকেশনটিকে প্রক্রিয়াটির প্রধান দোভাষী ব্যবহার করতে বাধ্য করা:

WSGIApplicationGroup %{GLOBAL}

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


হাই গ্রাহাম, আপনি কি এই উত্তরটি আধুনিক-সংস্করণটির আরও সাম্প্রতিক সংস্করণের প্রসঙ্গে আপডেট করতে পারবেন? বিশেষত, মোড_উজি-এক্সপ্রেস ব্যবহার করে যদি আমি অ্যাপাচি কনফিগার করে থাকি তবে এটি ডিফল্টরূপে কোনও সমস্যা হওয়ার কথা? উত্পন্ন httpd.confফাইলটিতে, WSGIApplicationGroupব্যবহৃত হয় না। কিন্তু, এখন পর্যন্ত application-group=${GLOBAL}<IfDefine ONE_PROCESS>এবং <IfDefine !ONE_PROCESS>ব্লক। উত্পন্ন httpd.confফাইলটিতে আমি একটি ডাব্লুএসজিআইডিআইমনপ্রসেস নির্দেশিকা দেখছি । এর অর্থ কি এটি ইতিমধ্যে ডিফল্টরূপে ডেমন মোড ব্যবহার করছে?
কাল

আপনি যদি mod_wsgi-express start-serverমোড_উজি-এক্সপ্রেসের জন্য জাজানো ইন্টিগ্রেশন ব্যবহার করেন তবে এটি ডিফল্ট হিসাবে ডিমন মোডের সাথে চলে এবং মূল দোভাষী ব্যবহার করে। সুতরাং এই ক্ষেত্রে এটি কোনও সমস্যা নয়। আপনি যদি ম্যানুয়ালি অ্যাপাচি কনফিগার করেন তবে এখনও এটি একটি সমস্যা। ONE_PROCESSঅংশটি কেবল তখনই যখন আপনি এটিকে ডিবাগ মোডে বাধ্য করেন, সেই ক্ষেত্রে এটি একক প্রক্রিয়া এম্বেড মোডে চলে। এটি এখনও মূল দোভাষীর মধ্যে চলছে।
গ্রাহাম ডাম্পলটন

application-groupবিকল্পটি WSGIScriptAliasব্যবহার করে একটি বিকল্প WSGIApplicationGroup
গ্রাহাম ডাম্পলটন

3

আমার ডাব্লুএসজিআই কনফিগার করার পদ্ধতির সাথে খাপ খায় এমন আরেকটি সমাধান WSGIScriptAliasলাইনটি পরিবর্তন করছিল :

WSGIDaemonProcess website user=user group=group python-path=/path/to/venv/website:/path/to/venv/lib/python2.7/site-packages
WSGIScriptAlias /website /path/to/venv/website/wsgi.py process-group=website application-group=%{GLOBAL}

<Location /website>
        WSGIProcessGroup website
</Location>

<Directory /path/to/venv/website>
        WSGIScriptReloading On
        <Files wsgi.py>
                Allow from all
                Require all granted
        </Files>
</Directory>

বৈশিষ্ট্যগুলি নোট করুন

process-group=website application-group=%{GLOBAL}

যা সাধারণত প্রয়োজন হয় না


1
আপনি ডাব্লুএসজিআইএসক্রিপ্ট রিলোইডিং নির্দেশিকাটিকে ডিফল্ট হিসাবে চালু করতে পারেন এবং সাধারণত কখনই বন্ধ করার প্রয়োজন হয় না। ডাব্লুএসজিআইএসপিএসএলিয়াসে প্রক্রিয়া-গোষ্ঠী বিকল্প ব্যবহার করার কারণে আপনি ডাব্লুএসজিআইজিপ্রসেসগ্রুপের নির্দেশিকাও বাদ দিতে পারেন।
গ্রাহাম ডাম্পলটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.