Rumah > Operasi dan penyelenggaraan > Nginx > Had sambungan pelayan proksi terbalik Nginx dan meminta kaedah penalaan baris gilir

Had sambungan pelayan proksi terbalik Nginx dan meminta kaedah penalaan baris gilir

PHPz
Lepaskan: 2023-08-08 10:37:45
asal
2631 orang telah melayarinya

Had sambungan pelayan proksi terbalik Nginx dan meminta kaedah penalaan baris gilir

Had sambungan pelayan proksi terbalik Nginx dan kaedah penalaan baris gilir

Pelayan proksi terbalik Nginx ialah pilihan yang sangat biasa dan boleh dipercayai apabila menjalankan aplikasi rangkaian konkurensi tinggi. Walau bagaimanapun, jika had sambungan dan baris gilir permintaan tidak dikonfigurasikan dengan betul, pelayan mungkin mengalami kesesakan prestasi dan masalah penafian perkhidmatan. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk mengehadkan bilangan sambungan dan mengoptimumkan baris gilir permintaan.

Had sambungan

Nginx boleh mengehadkan bilangan sambungan dengan menetapkan parameter worker_connections. Parameter ini menentukan bilangan maksimum sambungan yang boleh dikendalikan oleh setiap proses pekerja secara serentak. Apabila bilangan sambungan mencapai had ini, sambungan baharu akan ditolak.

Buka fail konfigurasi Nginx, cari blok http dan tambah atau ubah suai baris berikut:

http {
  ...
  worker_processes  auto;
  worker_connections  1024;
  ...
}
Salin selepas log masuk

Dalam contoh di atas, worker_connections ditetapkan kepada 1024, yang bermaksud setiap proses pekerja boleh mengendalikan 1024 sambungan secara serentak. Bergantung pada prestasi perkakasan pelayan dan keperluan aplikasi, anda boleh membuat pelarasan berdasarkan keadaan sebenar. Sila ambil perhatian bahawa nilai worker_processes harus ditetapkan kepada berbilang bilangan teras CPU untuk menggunakan sumber pelayan sepenuhnya.

Request Queue Tuning

Apabila bilangan sambungan serentak melebihi had worker_connections, Nginx akan meletakkan permintaan dalam baris gilir menunggu untuk diproses. Anda boleh melaraskan panjang gilir permintaan dan tamat masa untuk meminimumkan kemungkinan penafian perkhidmatan.

Teruskan untuk mengedit fail konfigurasi Nginx dan menambah atau mengubah suai baris berikut:

http {
  ...
  events {
    accept_mutex off;
    worker_connections  1024;
    worker_processes  auto;
    multi_accept on;
    use epoll;
    ...
  }
  ...
  server {
    ...
    location / {
      proxy_pass http://backend;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_http_version  1.1;
      proxy_set_header        Upgrade $http_upgrade;
      proxy_set_header        Connection "upgrade";
      proxy_read_timeout      600s;
      proxy_connect_timeout   600s;
      proxy_send_timeout      600s;
      proxy_buffer_size       128k;
      proxy_buffers           4 256k;
      proxy_busy_buffers_size 256k;
      proxy_buffering         on;
      ...
    }
    ...
  }
}
Salin selepas log masuk

Dalam contoh di atas, kami membuat beberapa penalaan pada baris gilir permintaan. Pertama, dengan menetapkan accept_mutex kepada mematikan, kami melumpuhkan mutex supaya berbilang proses pekerja boleh menerima sambungan baharu pada masa yang sama. Kedua, tetapkan multi_accept kepada hidup supaya Nginx memproses semua permintaan dalam baris gilir secepat mungkin. Akhir sekali, kami menetapkan masa tamat dan saiz penimbal mengikut keperluan sebenar.

Contoh Kod

Di bawah ialah contoh pelayan Node.js yang mudah, mensimulasikan aplikasi bahagian belakang.

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!
');
});

server.listen(3000, 'localhost', () => {
  console.log('Server running at http://localhost:3000/');
});
Salin selepas log masuk

Dalam contoh di atas, kami mencipta pelayan HTTP yang mudah mendengar pada port tempatan 3000. Memandangkan pelayan ini adalah untuk tujuan demonstrasi sahaja, ia hanya akan mengembalikan rentetan "Hello, World!"

Untuk menggunakan Nginx sebagai pelayan proksi terbalik, anda perlu menyimpan kod sampel di atas sebagai fail bernama server.js dan laksanakan arahan berikut untuk memulakan pelayan: server.js的文件,并执行以下命令来启动服务器:

node server.js
Salin selepas log masuk

接下来,将以下Nginx配置保存为一个名为nginx.conf的文件:

http {
  ...
  server {
    listen 80;
    location / {
      proxy_pass http://localhost:3000;
    }
  }
}
Salin selepas log masuk

通过执行以下命令来启动Nginx:

nginx -c /path/to/nginx.conf
Salin selepas log masuk

现在,您可以通过访问http://localhostrrreee

Seterusnya, tambahkan The konfigurasi Nginx berikut disimpan sebagai fail bernama nginx.conf:

rrreee

Mulakan Nginx dengan melaksanakan arahan berikut:

rrreee

Sekarang, anda boleh mengaksesnya dengan melawati http://localhost untuk mengakses aplikasi anda. Semua permintaan akan diproksi dan dimuatkan secara seimbang melalui pelayan Nginx. 🎜🎜Ringkasan🎜🎜Dengan mengehadkan bilangan sambungan dan menala baris gilir permintaan, anda boleh mengurus aplikasi rangkaian konkurensi tinggi dengan lebih baik. Di atas menerangkan cara menggunakan Nginx untuk mengehadkan bilangan sambungan dan mengoptimumkan baris gilir permintaan, dan menyediakan contoh kod pelayan Node.js yang mudah. Sila buat pelarasan konfigurasi yang sesuai berdasarkan keperluan sebenar dan prestasi perkakasan pelayan. 🎜

Atas ialah kandungan terperinci Had sambungan pelayan proksi terbalik Nginx dan meminta kaedah penalaan baris gilir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan