nginx কিছু ছবিতে সংযোগ বন্ধ করে দেয়


8

সমস্যা আছে nginx। এটি ক্লায়েন্ট ডাউনলোড শেষ হওয়ার আগে সংযোগ বন্ধ করে দেয়। এটা দেখতে অনেকটা:

 $ wget -O /dev/null http://www.site.com/images/theme/front/clean.jpg
--2012-07-11 21:37:03--  http://www.site.com/images/theme/front/clean.jpg
Resolving www.site.com (www.site.com)... 123.234.123.234
Connecting to www.site.com (www.site.com)|123.234.123.234|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 90707 (89K) [image/jpeg]
Saving to: `/dev/null'

26% [===============>                    ] 24,291      --.-K/s   in 8.7s    

2012-07-11 21:37:12 (2.74 KB/s) - Connection closed at byte 24291. Retrying.

--2012-07-11 21:37:13--  (try: 2)  http://www.site.com/images/theme/front/clean.jpg
Connecting to www.site.com (www.site.com)|123.234.123.234|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 90707 (89K), 66416 (65K) remaining [image/jpeg]
Saving to: `/dev/null'

53% [+++++++++++++++============>        ] 48,555      --.-K/s   in 8.7s    

2012-07-11 21:37:23 (2.74 KB/s) - Connection closed at byte 48555. Retrying.

--2012-07-11 21:37:25--  (try: 3)  http://www.site.com/images/theme/front/clean.jpg
Connecting to www.site.com (www.site.com)|123.234.123.234|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 90707 (89K), 42152 (41K) remaining [image/jpeg]
Saving to: `/dev/null'

100%[+++++++++++++++++++++++++++========>] 90,707      --.-K/s   in 0.1s    

2012-07-11 21:37:25 (311 KB/s) - `/dev/null' saved [90707/90707]

ছোট ইমেজ সহ একই সময়ে সমস্ত ঠিক আছে:

 $ wget -O /dev/null http://www.site.com/images/theme/front/grease.jpg
--2012-07-11 21:41:28--  http://www.site.com/images/theme/front/grease.jpg
Resolving www.site.com (www.site.com)... 123.234.123.234
Connecting to www.site.com (www.site.com)|123.234.123.234|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 21404 (21K) [image/jpeg]
Saving to: `/dev/null'

100%[====================================>] 21,404      --.-K/s   in 0.07s   

2012-07-11 21:41:29 (316 KB/s) - `/dev/null' saved [21404/21404]

এই কারণেই এই ছবিটি ব্রাউজারে পুরো আকারে আঁকতে পারে না। আমি এর একমাত্র মাথা দেখতে পাচ্ছি।

এনগিনেক্স ফ্রন্ট-এন্ড এবং অ্যাপাচি ব্যাক-এন্ড হিসাবে কনফিগার করা হয়েছে। অ্যাপাচে সরাসরি লিঙ্কটি ভাল কাজ করে, তাই এনজিনেক্সে সমস্যা আছে। আমি কি সঠিক?

nginx কনফিগারেশন:

user satellite;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    access_log  /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout  0;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    client_max_body_size 100m;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    server {
            listen 123.234.123.234:80;
            server_name site.com www.site.com;
            location ~* ^/(admin/|dump/|webmail/|myadmin/|webim/) {
                    proxy_pass http://123.234.123.234:8080;
                    proxy_redirect http://site.com:8080/ /;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP $remote_addr;
            }
            location / {
                    proxy_pass http://123.234.123.234:8080;
                    proxy_redirect http://site.com:8080/ /;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_cache ino;
                    proxy_cache_valid 12h;
                    proxy_hide_header "Set-Cookie";
                    proxy_ignore_headers "Cache-Control" "Expires";
            }
            location ~* ^.+\.(jpg|swf|flv|ico|txt|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
                    access_log /home/satellite/logs/site.com.nginx.access.log;
                    error_page 404 = @fallback;
                    if ( $host ~* ^((.*).site.com)$ ) {
                            set $proot /home/satellite/www/$1;
                            break;
                    }
                    if ( $host = "www.site.com" ) {
                            break;
                    }
                    if ( $host = "site.com" ) {
                            break;
                    }

                    root /home/satellite/www/site.com;
            }
            location @fallback {
                    proxy_pass http://123.234.123.234:8080;
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP $remote_addr;
            }
    }

এই সমস্যাটি সমাধান করার জন্য আমার কোথায় খনন করা উচিত?


1
আপনি কি সুইচ অফ করার চেষ্টা করেছেন sendfile?
ভিবার্ট

হ্যাঁ, কিছুই পরিবর্তিত হয়নি।
নলখাগড়া

উত্তর:


9

আমি যে বিষয়টি ভুলে গিয়েছিলাম তা হ'ল চেক করা /var/log/nginx/error.log

2012/07/12 08:46:44 [crit] 24074#0: *3 open() 
"/var/lib/nginx/proxy/1/00/0000000001" failed (13: Permission denied) 
while reading upstream, client: 109.173.96.30, server: site.com, request: 
"GET /images/theme/front/clean.jpg HTTP/1.1", upstream: 
"http://123.234.123.234:8080/images/theme/front/clean.jpg", 
host: "www.site.com", referrer: "http://www.google.com"

সুতরাং আমি /var/lib/nginx/proxy/*ডিরেক্টরি অনুমতিগুলি স্থির করেছি ( sudo chown -R www-data:www-data /var/lib/nginx/proxy/*) এবং এখন সবকিছু দুর্দান্ত কাজ করে। সহায়তার জন্য সবাইকে ধন্যবাদ


এর জন্য ধন্যবাদ. সুস্পষ্ট পরামর্শ মত মনে হচ্ছে তবে আমিও পরীক্ষা করে দেখিনি। আমার ক্ষেত্রে কারণটি ছিল: [সমালোচক] 6 # 6: * 2577 এমকেডির () "/ var / cache / nginx / প্রক্সি_টেম্প / 8" ব্যর্থ হয়েছে (28: ডিভাইসে কোনও স্থান বাকি নেই)
দামিয়ান মুর

1

সংযোগ বন্ধ হওয়ার সম্ভাব্য কারণ হ'ল ধীর সংযোগ এবং একটি সংক্ষিপ্ত keepalive_timeoutডিফল্ট মান জন্য keepalive_timeout75s হয়। যদি এটি খুব সংক্ষিপ্ত হয় এবং সংযোগটি ধীর হয় তবে তা খুব তাড়াতাড়ি বন্ধ হয়ে যেতে পারে।

http {
    ..
    keepalive_timeout 75;
}

আপনার চিত্র ডাউনলোড করা ধীর হতে পারে তার একটি কারণ হ'ল আপনার অ্যাপ্লিকেশন। আপনি যদি এনগিনেক্সের সাথে একত্রে সম্পদ পাইপলাইনের সাথে রুবি অন অন রেল অ্যাপ্লিকেশন ব্যবহার করছেন তবে চিত্র ডাউনলোডটি ধীর হতে পারে কারণ আপনি ভুল চিত্রের url ব্যবহার করছেন (সম্পদ পাইপলাইন দ্বারা উত্পন্ন আঙুলের ছাপ ছাড়াই)। রেল সাহায্যকারীদের সম্পদ_পথ এবং চিত্র_ট্যাগটি ফিঙ্গারপ্রিন্ট সহ ডান ইউআরএলগুলি তৈরি করে যা দ্রুত ডাউনলোড করা যায়।


1

আর একটি খুব গুরুত্বপূর্ণ বিষয় যাচাই করে দেখুন: আপনার ডিস্কের জায়গা বাকি আছে তা নিশ্চিত করুন!

আমার জন্য এটি নিম্নলিখিত মত ছিল:

[user@server]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        30G   29G     0 100% /

আমার জন্য, nginx ডিস্কে লিখতে অক্ষম হয়েছিল শেষ পর্যন্ত একই সমস্যার কারণ! আশা করি এটি কাউকে সাহায্য করবে!


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

1
হ্যাঁ অবশ্যই! এখানে একটি দৃশ্য রয়েছে: - এনগিনেক্স প্রক্সি সার্ভার হিসাবে কাজ করছে - এটি অ্যাপাচি থেকে একটি ফাইল পাচ্ছে - এনগিনেক্স ফাইলটির প্রথম অংশটি পেয়েছে (প্রতিক্রিয়া কোড 206) - এটি হার্ড ড্রাইভে চিঙ্কটি লিখে এবং পরবর্তী অংশের জন্য অনুরোধ পাঠায় - এটি পরের অংশটি গ্রহণ করে এবং কোনও জায়গাই অবশিষ্ট নেই বলে হার্ড ড্রাইভে লিখতে ব্যর্থ হয়! - এনগিনেক্স প্রতিক্রিয়া কোড 206 এর সাথে সংযোগ বন্ধ করে দেয় Full সম্পূর্ণ সামগ্রীটি ক্লায়েন্টকে সরবরাহ করা হয়নি! আশা করি যে স্পষ্ট!
র‌্যাপটার

1
রুশের ক্ষেত্রে 24,291 আকারের প্রথম চিত্রটি সফলভাবে প্রাপ্ত হয়েছিল। যার অর্থ ~ 24,291 ডলার পর্যন্ত সরাসরি মেমরি থেকে এনজিনেক্স দ্বারা পরিবেশন করা যেতে পারে। এই কারণেই 21,404 আকারের পরবর্তী চিত্রটি সফলভাবে পরিবেশন করা হয়েছিল কারণ এর জন্য এইচডিডি লেখার প্রয়োজন নেই।
র‌্যাপটার

0

আপনার ডাউনলোডের হার অবিশ্বাস্যভাবে কম। (২.74৪ কেবি / গুলি!)। এনগিনেক্স যেখানে অবস্থিত সেখানে একই মেশিনে উইজেট চালানোর সময় আপনি কি একই ফলাফল পাবেন? এটি হতে পারে যে এনগিনেক্স খুব ধীর লিঙ্কের উপর একটি অনুরোধের জন্য যুক্তিসঙ্গত প্রতিক্রিয়া ব্যক্ত করছে।

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

উদাহরণস্বরূপ, দীর্ঘসূত্রতা_কালীন নির্দেশাবলী 10 সেকেন্ডের ডিফল্ট হয়, তাই আপনি এটি পরীক্ষা করতে পারেন check

আপনার ক্লায়েন্টের সাথে সংযোগ কেন স্পষ্টত এতটা ধীর, তাও আপনার খোঁজ করা উচিত।

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


এটি ক্লায়েন্টের সমস্যা নয়, কারণ এমনকি ফায়ারফক্সও একই সমস্যা। আমি ডিফেরেন্ট জিওলোকেশনে বিভিন্ন মেশিন থেকে এটি চেষ্টা করেছি। একই আচরণ। তদ্ব্যতীত, আপনি যেমন উল্লেখ করতে পারেন ছোট ছবিতে গতিটি বেশ ভাল। পুনশ্চ. মেশিনে যেখানে nginx অবস্থিত রয়েছে সবকিছু ঠিক আছে। তাই আমি সময়সীমা নির্দেশিকা খনন করার চেষ্টা করব। PPS। এটি নেটওয়ার্ক ঝামেলা নয়, একই চিত্রের সরাসরি অ্যাপাচি লিঙ্কটি নিখুঁত কাজ করে।
নলখাগড়া

0

পরীক্ষা করে দেখুন lingering_time nginx.conf মান। এটি ডিফল্টভাবে 30 সেকেন্ডে সেট করা হবে। সুতরাং এটি কী করবে তা হ'ল, এনজিনেক্স ক্লায়েন্টের ডেটা প্রেরণের জন্য সর্বোচ্চ 30 সেকেন্ড অপেক্ষা করবে।

আপনি যদি এমন কোনও ফাইলের আপলোড বা পোষ্ট করছেন যা সম্পূর্ণ হতে 30 সেকেন্ডেরও বেশি সময় লাগতে পারে তবে এনগিনেক্স সার্ভার ক্লায়েন্টকে আরএসটি প্যাকেট প্রেরণ করে ক্লায়েন্টের সাথে সংযোগটি পুনরায় সেট করবে যদি আপলোডের সময় 30 সেকেন্ডের বেশি হয়।

Nginx ক্লায়েন্টের ডেটা শোনার জন্য আরও সময়ের জন্য অপেক্ষা করুন, তারপরে এই মানটিকে একটি উচ্চতর মান হিসাবে সেট করুন।

দীর্ঘসূত্রতা সম্পর্কিত সময় সম্পর্কিত বিশদ তথ্যের জন্য, এটি এখানে অলস সময়_ দেখুন

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