ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [РЕШЕНО] Nginx & comet: Как пр инять более 64K одновреме нных соединений ...


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: [РЕШЕНО] Nginx & comet: Как пр инять более 64K одновреме нных соединений ...
  • From: Eugene Batogov <johnbat26@xxxxxxxxx>
  • Date: Tue, 7 Dec 2010 16:08:06 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date :user-agent:references:in-reply-to:x-kmail-markup:mime-version :content-type:message-id; bh=Qg+1BB15KIiEkrxobsaP+Vk5e9f0kcb4zjHIrFmHiKw=; b=xXTTlkj9esLRHcHHMrQFDWoM9G8518Biq3DVfGfgTNho0BSXUWVz5SETYXlzP3m/Z/ zoaHtDWKi+ZRigO36djlUObJoERQof9PlBGxBtT4u3PESqSyxFSDYXGc0qHmu+Xbweei CBzoOiz5zmiDIlmCNPE0D1GDIoB84QQDisBvI=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:references:in-reply-to :x-kmail-markup:mime-version:content-type:message-id; b=PnX2rpDpO73oSTeSc7VScRUxduTaig1EpbQ34ilqJYPCd3slTk1ZAn7kY2/H7jctb+ DwwQopW7Seca3w52uDD1rmpKM9rW8OYBO5TqMLhMfhZhbF0gO8yrB0CTFNY7IUWnOm4C LQ8sSIqFW0ttCKhYEa8THOovuyfR21thNKFGo=
  • In-reply-to: <201012031829.22870.JohnBat26@xxxxxxxxx>
  • References: <AANLkTi=uPR8rsQSPSbtT3XBFY1oJfNNEszueC_RZKMe9@xxxxxxxxxxxxxx> <4CF8E5BA.4030202@xxxxxxxxxxx> <201012031829.22870.JohnBat26@xxxxxxxxx>

Итак. Чтобы Linux и NGINX обеспечивал более 64 K соединений необходимо:

1. Уровень ядра Linux ( /etc/syctl.conf):

1.1 Проверить параметр fs.file-max:

....

# Максимальное значение открытых файлов. Что бы его узнать, выполните

# команду cat /proc/sys/fs/file-max

fs.file-max = 999999

....

1.2 Необходимо увеличить параметр, контролирующий максимальное количество осиротевших сокетов: tcp_max_orphans

...

# Переменная задает максимальное число осиротевших (не связанных ни с

# одним процессом) сокетов. Если это число будет превышено, то такие

# соединения разрываются, а в системный журнал пишется предупреждение. Это

# ограничение существует исключительно ради предотвращения простейших

# разновидностей DoS-атак.

net.ipv4.tcp_max_orphans = 300000

...

1.3 Запрещаем кеширование статуса ssthresh (были ретрансмиты) для других соединений

net.ipv4.tcp_no_metrics_save = 1

1.4 rp_filter

#Включает/выключает reverse path filter (?проверка обратного адреса? ? хотя это слишком вольный перевод термина,

#но мне он кажется наиболее близким по смыслу. прим. перев.) для заданного интерфейса.

#Смысл этой переменной достаточно прост ? все что поступает к нам проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации

#и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс.

#Переменная может иметь два значения ? 0 (выключено) и 1 (включено). Значение по-умолчанию ? 0 (выключено)

net.ipv4.conf.eth0.rp_filter = 0

net.ipv4.conf.all.rp_filter = 0

...

2. Уровень подсистемы безопасности Linux:

Файл: /etc/security/limits.conf

...

#<domain> <type> <item> <value>

* soft nofile 300000

* hard nofile 300000

...

3. Уровень nginx:

Файл: /etc/nginx/nginx.conf:

.....

worker_rlimit_nofile 300000;

events {

worker_connections 50000;

use epoll;

}

...

Выдержка их документации по NGINX:

syntax: worker_rlimit_nofile число
default: нет
context: main

Директива изменяет ограничение на число используемых файлов RL1IMIT_NOFILE для рабочего процесса. Используется для увеличения ограничения без перезапуска основного процесса.

worker_connections 50000; - максимальное количество соединений для одного worker.

В тесте давал 80000 соединений по 40000 c двух серверов.

Затем отправил сообщение всем для проверки глобальных реконнектов.

При иследовании зоны насыщения оказалось, что при привышении 100K сервер перестает отвечать на запросы.

В логах на этот раз ничего нет. Тут надо копать дальше.

loadaverage: 0.05

Каждый worker отъел ~ -60-115 Mb.

Всего workers: 8.

Кто что скажет по этому вопросу?

Что еще можно проанализировать?

Жду конструктивной критики.

P.S. Характеристики сервера во вложении

--

Best Regards, Eugene Batogov

H/W path              Device     Class      Description
=======================================================
                                 system     IBM System x3650 -[7979KFG]-
/0                               bus        Motherboard
/0/0                             memory     57KB BIOS
/0/2                             bus        System Planar
/0/2/3                           bus        Power Suppy Backplane
/0/2/4                           bus        PCI-Express Riser Card, Slots 1 & 2
/0/2/d                           processor  Intel(R) Xeon(R) CPU           
E5335  @ 2.00GHz
/0/2/d/5.1                       processor  Logical CPU
/0/2/d/5.2                       processor  Logical CPU
/0/2/d/5.3                       processor  Logical CPU
/0/2/d/5.4                       processor  Logical CPU
/0/2/e                           processor  Intel(R) Xeon(R) CPU           
E5335  @ 2.00GHz
/0/2/e/5.1                       processor  Logical CPU
/0/2/e/5.2                       processor  Logical CPU
/0/2/e/5.3                       processor  Logical CPU
/0/2/e/5.4                       processor  Logical CPU
/0/2/4a                          memory     System Memory
/0/2/4a/0                        memory     1GB DIMM Synchronous 266 MHz (3.8 
ns)
/0/2/4a/1                        memory     1GB DIMM Synchronous 266 MHz (3.8 
ns)
/0/2/4a/2                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/3                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/4                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/5                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/6                        memory     1GB DIMM Synchronous 266 MHz (3.8 
ns)
/0/2/4a/7                        memory     1GB DIMM Synchronous 266 MHz (3.8 
ns)
/0/2/4a/8                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/9                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/a                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/2/4a/b                        memory     DIMM Synchronous 266 MHz (3.8 ns) 
[empty]
/0/9                             memory     32KB L1 cache
/0/a                             memory     8MB L2 cache
/0/b                             memory     32KB L1 cache
/0/c                             memory     8MB L2 cache
/0/1                             memory     4050MB System memory
/0/100                           bridge     5000P Chipset Memory Controller Hub
/0/100/2                         bridge     5000 Series Chipset PCI Express x4 
Port 2
/0/100/2/0                       bridge     6311ESB/6321ESB PCI Express 
Upstream Port
/0/100/2/0/0                     bridge     6311ESB/6321ESB PCI Express 
Downstream Port E1
/0/100/2/0/1                     bridge     6311ESB/6321ESB PCI Express 
Downstream Port E2
/0/100/2/0.3                     bridge     6311ESB/6321ESB PCI Express to 
PCI-X Bridge
/0/100/3                         bridge     5000 Series Chipset PCI Express x4 
Port 3
/0/100/3/0            scsi0      storage    AAC-RAID (Rocket)
/0/100/3/0/0.0.0      /dev/sda   disk       68GB raid1
/0/100/3/0/0.0.0/1    /dev/sda1  volume     101MB Linux filesystem partition
/0/100/3/0/0.0.0/2    /dev/sda2  volume     20GB Linux filesystem partition
/0/100/3/0/0.0.0/3    /dev/sda3  volume     5106MB Linux swap / Solaris 
partition
/0/100/3/0/0.0.0/4    /dev/sda4  volume     42GB Extended partition
/0/100/3/0/0.0.0/4/5  /dev/sda5  volume     42GB Linux filesystem partition
/0/100/3/0/1.0.0                 disk       81GB MAX3073RC
/0/100/3/0/3.0.0                 generic    VSC7160
/0/100/4                         bridge     5000 Series Chipset PCI Express x8 
Port 4-5
/0/100/5                         bridge     5000 Series Chipset PCI Express x4 
Port 5
/0/100/6                         bridge     5000 Series Chipset PCI Express x8 
Port 6-7
/0/100/7                         bridge     5000 Series Chipset PCI Express x4 
Port 7
/0/100/8                         system     5000 Series Chipset DMA Engine
/0/100/1c                        bridge     631xESB/632xESB/3100 Chipset PCI 
Express Root Port 1
/0/100/1c/0                      bridge     EPB PCI-Express to PCI-X Bridge
/0/100/1c/0/0         eth0       network    NetXtreme II BCM5708 Gigabit 
Ethernet
/0/100/1c.1                      bridge     631xESB/632xESB/3100 Chipset PCI 
Express Root Port 2
/0/100/1c.1/0                    bridge     EPB PCI-Express to PCI-X Bridge
/0/100/1c.1/0/0       eth1       network    NetXtreme II BCM5708 Gigabit 
Ethernet
/0/100/1d                        bus        631xESB/632xESB/3100 Chipset UHCI 
USB Controller #1
/0/100/1d/1           usb2       bus        UHCI Host Controller
/0/100/1d.1                      bus        631xESB/632xESB/3100 Chipset UHCI 
USB Controller #2
/0/100/1d.1/1         usb3       bus        UHCI Host Controller
/0/100/1d.2                      bus        631xESB/632xESB/3100 Chipset UHCI 
USB Controller #3
/0/100/1d.2/1         usb4       bus        UHCI Host Controller
/0/100/1d.2/1/2                  generic    SafeNet Sentinel
/0/100/1d.3                      bus        631xESB/632xESB/3100 Chipset UHCI 
USB Controller #4
/0/100/1d.3/1         usb5       bus        UHCI Host Controller
/0/100/1d.7                      bus        631xESB/632xESB/3100 Chipset EHCI 
USB2 Controller
/0/100/1d.7/1         usb1       bus        EHCI Host Controller
/0/100/1e                        bridge     82801 PCI Bridge
/0/100/1e/6                      display    ES1000
/0/100/1f                        bridge     631xESB/632xESB/3100 Chipset LPC 
Interface Controller
/0/100/1f.2                      storage    631xESB/632xESB/3100 Chipset SATA 
IDE Controller
/0/100/1f.3                      bus        631xESB/632xESB/3100 Chipset SMBus 
Controller
/0/101                           bridge     5000 Series Chipset FSB Registers
/0/102                           bridge     5000 Series Chipset FSB Registers
/0/103                           bridge     5000 Series Chipset FSB Registers
/0/104                           bridge     5000 Series Chipset Reserved 
Registers
/0/105                           bridge     5000 Series Chipset Reserved 
Registers
/0/106                           bridge     5000 Series Chipset FBD Registers
/0/107                           bridge     5000 Series Chipset FBD Registers
/1                    ide1       bus        IDE Channel 0
/1/0                  /dev/hdc   disk       UJDA770 DVD/CDRW
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.