Советы по настройке и оптимизации Nginx и PHP-FPM

Thank you for reading this post, don't forget to subscribe!

Определить Nginx worker_processes и worker_connections

Настрой­ки по умол­ча­нию  хоро­ши, но их сто­ит немно­го опти­ми­зи­ро­вать: max_clients = worker_processes * worker_connections.

Базо­вые настрой­ки Nginx могут обра­ба­ты­вать сот­ни одно­вре­мен­ных соединений:

Обыч­но 1000 одно­вре­мен­ных соеди­не­ний на один сер­вер это хоро­шо, но порою дру­гие части, напри­мер жест­кий диск могут ока­зать­ся мед­лен­ны­ми и это при­ве­дет к тому, что Nginx будет забло­ки­ро­ван на опе­ра­ции вво­да-выво­да (I/O). Что­бы избе­жать бло­ки­ров­ки исполь­зуй­те, напри­мер, сле­ду­ю­щие настрой­ки: одни worker_process на ядро процессора:

Worker Processes

Что­бы опре­де­лить сколь­ко ядер име­ет ваш про­цес­сор, введите:

В дан­ном слу­чае у меня четы­ре ядра, поэто­му окон­ча­тель­ный пара­мерт worker_processes уста­нав­ли­ва­ем как 4:

Worker Connections

Лич­но я при­дер­жи­ва­юсь 1024 соеди­не­ний на один вор­кер, пото­му что у меня нет ника­ких осно­ва­ний для повы­ше­ния это­го зна­че­ния. Но если напри­мер 4096 соеди­не­ний в секун­ду не хва­та­ет, то мож­но попро­бо­вать удво­ить 2048 соеди­не­ний на процесс.

Окон­ча­тель­ные настрой­ки выгля­дят седу­ю­щим образом: