নোড.জেএস অ্যাপ্লিকেশনটিতে অ্যাপাওয়ারের প্রক্সি অনুরোধটি সংযোগ করতে আওয়ার্ডের বিলম্ব


12

আমার উবুন্টু সার্ভার 10.04 এ আমি একটি উদাহরণ নোড.জেএস অ্যাপ চালাচ্ছি:

var http = require("http");

function onRequest(request, response) {

        console.log("Request received.");
        response.writeHead(200, {"Content-Type": "text/html"});
        response.write("Hello World");
        response.end();

}

http.createServer(onRequest).listen(3000);

এটি কেবল 3000 পোর্টে অনুরোধগুলি শোনায়, এই অনুরোধটি কনসোলে লগ ইন করুন এবং ক্লায়েন্টকে একটি HTTP "হ্যালো ওয়ার্ল্ড" প্রেরণ করুন

লক্ষ্য ছিল এই অ্যাপটিকে অ্যাপাচি 2 এর সাথে সহাবস্থান করা। সুতরাং কিছু গবেষণার পরে আমি এইভাবে ডিফল্ট ফাইল ( / ইত্যাদি / অ্যাপাচি 2 / সাইটগুলি উপলব্ধ / ডিফল্ট ) সম্পাদনা করেছি:

<VirtualHost *:80>
        ServerAdmin haj@myserver.com
        ServerName dev.myserver.com

        <Location /node>

                ProxyPassReverse http://127.0.0.1:3000/
                ProxyPass http://127.0.0.1:3000/

        </Location>

        <Proxy>
                Allow from all
        </Proxy>

        DocumentRoot /home/haj/www/http_home

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /home/haj/www/http_home/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /home/haj/www/log/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /home/haj/www/log/access.log combined


</VirtualHost>

সুতরাং, যখন কোনও ব্যবহারকারী কল করে http://dev.myserver.com/nodeবা http://dev.myserver.com/node/, আপাচি অনুরোধটির প্রক্স করে, নোড.জেএস প্রসেসিং করে এবং ব্যবহারকারী একটি "হ্যালো ওয়ার্ল্ড" ফিরে পায়।

একটি মাত্র সমস্যা রয়েছে: এতে কিছুটা সময় লাগে, আসুন একে 'লোড' প্রক্সি বলুন, অন্য কথায়, আমি এই বার্তাগুলি ব্রাউজারে পাই:

<503 Service Temporarily Unavailable>

Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Apache/2.2.14 (Ubuntu) Server at dev.neosource.cl Port 80

তবুও, ত্রুটি.লগ আমাকে বলে:

[Thu Apr 21 01:02:10 2011] [error] proxy: HTTP: disabled connection for (127.0.0.1)
[Thu Apr 21 01:02:10 2011] [error] proxy: HTTP: disabled connection for (127.0.0.1)
[Thu Apr 21 01:02:10 2011] [error] proxy: HTTP: disabled connection for (127.0.0.1)

তারপরে হঠাৎ, এটি ঠিক ঠিক এর মতোই কাজ করে। অনুরোধের সংখ্যা নেই, সময় নেই, কোনও প্যাটার্ন নেই।

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

সম্পাদনা 1 : লগলভিলকে ডিবাগ-এ সংশোধন করার পরে, এই বিলম্বগুলির মধ্যে একটির সময় আমি অনুরোধ অনুযায়ী এটি পেয়েছি:

[Thu Apr 21 02:30:40 2011] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //127.0.0.1:3000/
[Thu Apr 21 02:30:40 2011] [debug] proxy_util.c(1494): [client 200.xxx.yyy.zzz] proxy: http: found worker http://127.0.0.1:3000/ for http://127.0.0.1:3000/
[Thu Apr 21 02:30:40 2011] [debug] mod_proxy.c(993): Running scheme http handler (attempt 0)
[Thu Apr 21 02:30:40 2011] [debug] mod_proxy_http.c(1940): proxy: HTTP: serving URL http://127.0.0.1:3000/
[Thu Apr 21 02:30:40 2011] [debug] proxy_util.c(1937): proxy: HTTP: retrying the worker for (127.0.0.1)
[Thu Apr 21 02:30:40 2011] [error] proxy: HTTP: disabled connection for (127.0.0.1)
[Thu Apr 21 02:30:40 2011] [debug] mod_deflate.c(615): [client 200.xxx.yyy.zzz] Zlib: Compressed 405 to 273 : URL /node

... এবং যখন এটি আবার হবে:

[Thu Apr 21 02:35:16 2011] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //127.0.0.1:3000/
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(1494): [client 200.xxx.yyy.zzz] proxy: http: found worker http://127.0.0.1:3000/ for http://127.0.0.1:3000/
[Thu Apr 21 02:35:16 2011] [debug] mod_proxy.c(993): Running scheme http handler (attempt 0)
[Thu Apr 21 02:35:16 2011] [debug] mod_proxy_http.c(1940): proxy: HTTP: serving URL http://127.0.0.1:3000/
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(1999): proxy: HTTP: has acquired connection for (127.0.0.1)
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(2055): proxy: connecting http://127.0.0.1:3000/ to 127.0.0.1:3000
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(2153): proxy: connected / to 127.0.0.1:3000
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(2244): proxy: HTTP: backend socket is disconnected.
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(2308): proxy: HTTP: fam 2 socket created to connect to 127.0.0.1
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(2414): proxy: HTTP: connection complete to 127.0.0.1:3000 (127.0.0.1)
[Thu Apr 21 02:35:16 2011] [debug] mod_proxy_http.c(1723): proxy: start body send
[Thu Apr 21 02:35:16 2011] [debug] mod_deflate.c(615): [client 200.xxx.yyy.zzz] Zlib: Compressed 11 to 13 : URL /node
[Thu Apr 21 02:35:16 2011] [debug] mod_proxy_http.c(1816): proxy: end body send
[Thu Apr 21 02:35:16 2011] [debug] proxy_util.c(2017): proxy: HTTP: has released connection for (127.0.0.1)

মডারেটরদের কাছে: আমি নিশ্চিত নই যে এটি স্ট্যাকওভারফ্লো প্রশ্ন বা সার্ভারফল্ট প্রশ্ন, তাই আমি উভয় সাইট পোস্ট করেছি।
হারমান জং

1
উত্তর না পেলে ক্রস পোস্টিং একটি খারাপ ধারণা, তবে তাদের মধ্যেও লিঙ্কটি অতিক্রম করার বিষয়ে নিশ্চিত হন! আপনি যদি ভুল জায়গায় পোস্ট করেন তবে মডারেটররা এটিকে সঠিক জায়গায় স্থানান্তরিত করতে সহায়তা করবে, তবে দয়া করে শুরু থেকে কেবল আমাদের প্রচেষ্টাটিকেই নকল করবেন না!
কালেব

দুঃখিত @ কালেব, শিক্ষাবর্ষের ভুল আর হবে না।
হারমান জং

কোনও উদ্বেগ নেই, আপনি জায়গা হিসাবে যান এই একটি শেখা।
কালেব

উত্তর:


10

পরিবর্তন LogLevelকরা debugআপনাকে ত্রুটি.লগের আরও তথ্য দেবে। দয়া করে এটি করুন এবং ফলাফল পোস্ট করুন। এই তথ্য ব্যতীত, আমার অনুমান আছে যে আপনার প্রক্সিপাস লাইনটি পরিবর্তন ProxyPass http://127.0.0.1:3000/ retry=0করতে সহায়তা করতে পারে। সাধারণভাবে, অ্যাপাচি Mod_proxy ডকুমেন্টেশনে আপনার কাছে উপলব্ধ প্যারামিটারগুলির বিষয়ে আরও বিশদ রয়েছে has


ধন্যবাদ @ আসদারবার্ট, এখন আমি একটি "বিপরীত মার্ফি" অভিজ্ঞতা করছি, কারণ আমি ত্রুটিটির প্রতিরূপ তৈরি করার চেষ্টা করছি এবং সবকিছু ঠিকঠাক হয়ে গেছে! আমি বাজি ধরেছি যে উত্পাদনে আমার আবার এই পরিস্থিতি হবে ... আমার কাছে ডেটা পাওয়ার সাথে সাথে আমি এটি এখানে পূরণ করব। আবার ধন্যবাদ.
হারমান জং

সেই পরিসংখ্যান! LogLevel debugউত্পাদনে ব্যবহার না করা নিশ্চিত করুন ।
জাস্টারোবার্ট

হাঃ হাঃ হাঃ. আমি আমার প্রশ্নটি সম্পাদনা করেছি ited
হারমান জং

1
অ্যাপাচি লগগুলি নির্দেশ করে যে আপনার নোড.জেএস প্রক্রিয়া বিলম্বের সময় প্রক্সাইড অনুরোধগুলিতে সাড়া দিচ্ছে না। আপনি কি সেই সময়ে আপনার নোড.জেএস লগগুলি থেকে কিছু পান? অ্যাপাচি যখন আপনাকে বিলম্ব দিচ্ছে আপনি কি সরাসরি আপনার ব্রাউজারে নোড.জেএস সার্ভারটি দেখতে পারেন? ProxyPass http://127.0.0.1:3000/ retry=0 timeout=10সময়সীমা স্পষ্ট করার জন্য, ব্যবহার বিবেচনা করুন । এছাড়াও, কেন আপনি নোড.জেএস এর সামনে অ্যাপাচি রাখতে চাইবেন না সে জন্য নিউজ.আইকোবিনেটর . com/item ? id=2037328 এ আলোচনা দেখুন ।
জাস্টারোবার্ট

2

এটি খনন করা। সেলইনাক্স সক্ষম করে আমার CentOS এ এই সমস্যাটি ছিল। আমার যা করার দরকার তা হ'ল httpd কে নেটওয়ার্ক সংযোগ তৈরি করার অনুমতি দেওয়া:

/usr/sbin/setsebool httpd_can_network_connect 1

(এবং httpd পুনঃসূচনা করুন)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.