PHP FPM, PHP PPM, Nginx Unit, React PHP рдФрд░ RoadRunner рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ



рдпреИрдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рдореНрдлрдиреА 4 рдФрд░ PHP 7.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд▓рдХреНрд╖реНрдп рд╡рд┐рднрд┐рдиреНрди рднрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬрдирд╛ рдерд╛ред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреЗрдмрд▓ рдФрд░ рдЧреНрд░рд╛рдл рд╣реИрдВред

рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ
рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЖрд╡реЗрджрди


рдЖрд╡реЗрджрди рд╕рд┐рдореНрдлрдиреА 4 рдФрд░ рдкреАрдПрдЪрдкреА 7.2 рдкрд░ рдЪрд▓рддрд╛ рд╣реИред


рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдорд╛рд░реНрдЧ рдХрд╛ рдЙрддреНрддрд░ рдФрд░ рд░рд┐рдЯрд░реНрди:


  • рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛;
  • рдкрд░реНрдпрд╛рд╡рд░рдг;
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЦрд╝рдмрд░;
  • рдЙрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;
  • php.ini рдЪрд░ред

рдЙрддреНрддрд░ рдЙрджрд╛рд╣рд░рдг:


curl 'http://127.0.0.1:8000/' | python -m json.tool { "env": "prod", "type": "php-fpm", "pid": 8, "random_num": 37264, "php": { "version": "7.2.12", "date.timezone": "Europe/Paris", "display_errors": "", "error_log": "/proc/self/fd/2", "error_reporting": "32767", "log_errors": "1", "memory_limit": "256M", "opcache.enable": "1", "opcache.max_accelerated_files": "20000", "opcache.memory_consumption": "256", "opcache.validate_timestamps": "0", "realpath_cache_size": "4096K", "realpath_cache_ttl": "600", "short_open_tag": "" } } 

PHP рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



Stderr рдореЗрдВ рд▓реЙрдЧ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ:
/config/packages/prod/monolog.yaml


 monolog: handlers: main: type: stream path: "php://stderr" level: error console: type: console 

рдХреИрд╢ рдХреЛ / dev / shm рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
/src/Kernel.php


 ... class Kernel extends BaseKernel { public function getCacheDir() { if ($this->environment === 'prod') { return '/dev/shm/symfony-app/cache/' . $this->environment; } else { return $this->getProjectDir() . '/var/cache/' . $this->environment; } } } ... 

рдкреНрд░рддреНрдпреЗрдХ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬ рдиреЗ рддреАрди рдореБрдЦреНрдп рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдП:


  • Nginx - рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░;
  • рдРрдк - рд╕рднреА рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдЖрд╡реЗрджрди рдХреЛрдб;
  • PHP FPM \ Nginx Unit \ Road Runner \ React PHP - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ред

рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рджреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ (рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛) рддрдХ рд╕реАрдорд┐рдд рд╣реИред


рд╕реЗрд╡рд╛рдПрдВ


PHP FPM


PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХред рд╕реАред рдореЗрдВ рд▓рд┐рдЦрд╛ред


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


  • рд╕реНрдореГрддрд┐ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;
  • рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рд╡рд┐рдкрдХреНрд╖:


  • PHP рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХрдорд╛рди:


 cd docker/php-fpm && docker-compose up -d 

PHP PPM


PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХред рдпрд╣ PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


  • рдЪрд░ рдХреЛ рдПрдХ рдмрд╛рд░ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ;
  • рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рд╕рд┐рдореНрдлрдиреА / рд▓рд╛рд░рд╡реЗрд▓, рдЬрд╝реЗрдВрдб, рдХреЗрдХрдкреАрдПрдЪрдкреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ)ред

рд╡рд┐рдкрдХреНрд╖:


  • рд╕реНрдореГрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХрдорд╛рди:


 cd docker/php-ppm && docker-compose up -d 

Nginx рдЗрдХрд╛рдИ


Nginx рдЯреАрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ред рд╕реАред рдореЗрдВ рд▓рд┐рдЦрд╛ред


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


  • рдЖрдк HTTP рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ;
  • рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ;
  • рд╕реНрдореГрддрд┐ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;
  • рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рд╡рд┐рдкрдХреНрд╖:


  • PHP рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Nginx- рдпреВрдирд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ php.ini рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


 ; Nginx Unit variables_order=E 

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХрдорд╛рди:


 cd docker/nginx-unit && docker-compose up -d 

PHP рдХреЛ React рдХрд░реЗ


рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдпрд╣ PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЪрд░ рдХреЛ рдЖрд░рдВрдн рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред

рд╡рд┐рдкрдХреНрд╖:


  • рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛;
  • рд╕реНрдореГрддрд┐ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрджрд┐ рдЖрдк рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП --reboot-k рдЧрд┐рдиреЗ-рдмрд╛рдж-рдЕрдиреБрд░реЛрдз рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрдлрдиреА рдХрд░реНрдиреЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛрдб
 #!/usr/bin/env php <?php use App\Kernel; use Symfony\Component\Debug\Debug; use Symfony\Component\HttpFoundation\Request; require __DIR__ . '/../config/bootstrap.php'; $env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev'; $debug = (bool)($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ('prod' !== $env)); if ($debug) { umask(0000); Debug::enable(); } if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) { Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); } if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) { Request::setTrustedHosts(explode(',', $trustedHosts)); } $loop = React\EventLoop\Factory::create(); $kernel = new Kernel($env, $debug); $kernel->boot(); $rebootKernelAfterRequest = in_array('--reboot-kernel-after-request', $argv); /** @var \Psr\Log\LoggerInterface $logger */ $logger = $kernel->getContainer()->get('logger'); $server = new React\Http\Server(function (Psr\Http\Message\ServerRequestInterface $request) use ($kernel, $logger, $rebootKernelAfterRequest) { $method = $request->getMethod(); $headers = $request->getHeaders(); $content = $request->getBody(); $post = []; if (in_array(strtoupper($method), ['POST', 'PUT', 'DELETE', 'PATCH']) && isset($headers['Content-Type']) && (0 === strpos($headers['Content-Type'], 'application/x-www-form-urlencoded')) ) { parse_str($content, $post); } $sfRequest = new Symfony\Component\HttpFoundation\Request( $request->getQueryParams(), $post, [], $request->getCookieParams(), $request->getUploadedFiles(), [], $content ); $sfRequest->setMethod($method); $sfRequest->headers->replace($headers); $sfRequest->server->set('REQUEST_URI', $request->getUri()); if (isset($headers['Host'])) { $sfRequest->server->set('SERVER_NAME', current($headers['Host'])); } try { $sfResponse = $kernel->handle($sfRequest); } catch (\Exception $e) { $logger->error('Internal server error', ['error' => $e->getMessage(), 'trace' => $e->getTraceAsString()]); $sfResponse = new \Symfony\Component\HttpFoundation\Response('Internal server error', 500); } catch (\Throwable $e) { $logger->error('Internal server error', ['error' => $e->getMessage(), 'trace' => $e->getTraceAsString()]); $sfResponse = new \Symfony\Component\HttpFoundation\Response('Internal server error', 500); } $kernel->terminate($sfRequest, $sfResponse); if ($rebootKernelAfterRequest) { $kernel->reboot(null); } return new React\Http\Response( $sfResponse->getStatusCode(), $sfResponse->headers->all(), $sfResponse->getContent() ); }); $server->on('error', function (\Exception $e) use ($logger) { $logger->error('Internal server error', ['error' => $e->getMessage(), 'trace' => $e->getTraceAsString()]); }); $socket = new React\Socket\Server('tcp://0.0.0.0:9000', $loop); $server->listen($socket); $logger->info('Server running', ['addr' => 'tcp://0.0.0.0:9000']); $loop->run(); 

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХрдорд╛рди:


 cd docker/react-php && docker-compose up -d --scale php=2 

рд╕рдбрд╝рдХ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛


рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ PHP рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХред рдЧреЛрд▓рд╛рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


  • рдЖрдк рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред

рд╡рд┐рдкрдХреНрд╖:


  • рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛;
  • рд╕реНрдореГрддрд┐ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрджрд┐ рдЖрдк рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП --reboot-k рдЧрд┐рдиреЗ-рдмрд╛рдж-рдЕрдиреБрд░реЛрдз рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрдлрдиреА рдХрд░реНрдиреЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдореЗрдореЛрд░реА рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛрдб
 #!/usr/bin/env php <?php use App\Kernel; use Spiral\Goridge\SocketRelay; use Spiral\RoadRunner\PSR7Client; use Spiral\RoadRunner\Worker; use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory; use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; use Symfony\Component\Debug\Debug; use Symfony\Component\HttpFoundation\Request; require __DIR__ . '/../config/bootstrap.php'; $env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'dev'; $debug = (bool)($_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? ('prod' !== $env)); if ($debug) { umask(0000); Debug::enable(); } if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) { Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); } if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) { Request::setTrustedHosts(explode(',', $trustedHosts)); } $kernel = new Kernel($env, $debug); $kernel->boot(); $rebootKernelAfterRequest = in_array('--reboot-kernel-after-request', $argv); $relay = new SocketRelay('/tmp/road-runner.sock', null, SocketRelay::SOCK_UNIX); $psr7 = new PSR7Client(new Worker($relay)); $httpFoundationFactory = new HttpFoundationFactory(); $diactorosFactory = new DiactorosFactory(); while ($req = $psr7->acceptRequest()) { try { $request = $httpFoundationFactory->createRequest($req); $response = $kernel->handle($request); $psr7->respond($diactorosFactory->createResponse($response)); $kernel->terminate($request, $response); if($rebootKernelAfterRequest) { $kernel->reboot(null); } } catch (\Throwable $e) { $psr7->getWorker()->error((string)$e); } } 

рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХрдорд╛рди:


 cd docker/road-runner && docker-compose up -d 

рдкрд░реАрдХреНрд╖рдг


рдпреИрдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рд╡рд┐рднрд┐рдиреНрди рдЖрднрд╛рд╕реА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдереЗред


рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЖрднрд╛рд╕реА рд╕рд░реНрд╡рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди : рдХреЗ.рд╡реА.рдПрдо.
рд╕реАрдкреАрдпреВ : 2 рдХреЛрд░
рд░реИрдо : 4096 рдПрдордмреА
рдПрд╕рдПрд╕рдбреА : 50 рдЬреАрдмреА
рдХрдиреЗрдХреНрд╢рди : 100MBit
рдУрдПрд╕ : рд╕реЗрдВрдЯреЛрд╕ 7 (64x)


рдкрд░реАрдХреНрд╖рдгрд┐рдд рд╕реЗрд╡рд╛рдПрдБ:


  • php-рдПрдл рдкреА рдПрдо
  • php-рдкреАрдкреАрдПрдо
  • nginx рдЗрдХрд╛рдИ
  • рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ
  • рд╕рдбрд╝рдХ-рдзрд╛рд╡рдХ-рд░рд┐рдмреВрдЯ (рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде - рдХреНрд░реЗрдмреВрдЯ-рдХрд░реНрдиреЗрд▓-рдЖрдлреНрдЯрд░-рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ )
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ (рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде - рдХреНрд░реЗрдмреВрдЯ-рдХрд░реНрдиреЗрд▓-рдЖрдлреНрдЯрд░-рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ )

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП 1000/10000 рдЖрд░рдкреАрдПрд╕ рдиреЗ php-fpm-80 рд╕реЗрд╡рд╛ рдХреЛ рдЬреЛрдбрд╝рд╛
рдЗрд╕рдХреЗ рд▓рд┐рдП php-fpm рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 pm = dynamic pm.max_children = 80 

рдпрд╛рдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреА рдмрд╛рд░ рдЗрд╕реЗ рд▓рдХреНрд╖реНрдп рдкрд░ рд╢реВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рддрдХ рдХрд╛рд░рддреВрд╕ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ рддрдм рддрдХ рд░реБрдХрддреЗ рдирд╣реАрдВ рд╣реИрдВред рд╕реЗрд╡рд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдордп рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕реЗрд╡рд╛ рдЬрд┐рддрдиреА рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИ, рдЙрддрдиреА рд╣реА рд▓рдВрдмреА рдЕрд╡рдзрд┐ рд╣реЛрдЧреАред


рдпреИрдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдирдВрдмрд░ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ред


100 рдЖрд░рдкреАрдПрд╕


рдлреИрдВрдЯрдо рдпрд╛рдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


 phantom: load_profile: load_type: rps schedule: line(1, 100, 60s) const(100, 540s) 

рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдВрдХ



рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рдкреНрд░рддрд┐рд╢рдд


95% (рдПрдордПрд╕)90% (рдПрдордПрд╕)80% (рдПрдордПрд╕)50% (рдПрдордПрд╕)HTTP рдареАрдХ рд╣реИ (%)HTTP рдУрдХреЗ (рдЧрд┐рдирддреА)
php-рдПрдл рдкреА рдПрдо9.96.34.353.5910057030
php-рдкреАрдкреАрдПрдо9.463.883.1610057030
nginx рдЗрдХрд╛рдИ116.64.433.6910057030
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ8.15.13.532.9210057030
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ128.65.33.8510057030
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php8.54.913.292.7410057030
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ138.55.53.9510057030

рдирд┐рдЧрд░рд╛рдиреА


рд╕реАрдкреАрдпреВ рдордВрдЭрд▓рд╛ (%)рд╕реАрдкреАрдпреВ рдЕрдзрд┐рдХрддрдо (%)рдореЗрдореЛрд░реА рдореЗрдбрд┐рдпрди (MB)рдореЗрдореЛрд░реА рдЕрдзрд┐рдХрддрдо (MB)
php-рдПрдл рдкреА рдПрдо9.1512.58880.32907.97
php-рдкреАрдкреАрдПрдо7.0813.68901.72913.80
nginx рдЗрдХрд╛рдИ9.5612.54923.02943.90
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ5.578.61992.711,001.46
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ9.1812.67848.43870.26
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php4.536.581,004.681,009.91
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ9.6112.67885.92892.52

рдЧреНрд░рд╛рдлрд┐рдХреНрд╕



рдЪрд╛рд░реНрдЯ 1.1 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп



рдЪрд╛рд░реНрдЯ 1.2 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб



рдЪрд╛рд░реНрдЯ 1.3 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдореЗрдореЛрд░реА рдЦрдкрдд


500 рдЖрд░рдкреАрдПрд╕


рдлреИрдВрдЯрдо рдпрд╛рдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


 phantom: load_profile: load_type: rps schedule: line(1, 500, 60s) const(500, 540s) 

рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдВрдХ



рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рдкреНрд░рддрд┐рд╢рдд


95% (рдПрдордПрд╕)90% (рдПрдордПрд╕)80% (рдПрдордПрд╕)50% (рдПрдордПрд╕)HTTP рдареАрдХ рд╣реИ (%)HTTP рдУрдХреЗ (рдЧрд┐рдирддреА)
php-рдПрдл рдкреА рдПрдо138.45.33.69100285,030
php-рдкреАрдкреАрдПрдо1594.723.24100285,030
nginx рдЗрдХрд╛рдИ1285.53.93100285,030
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ9.663.712.83100285,030
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ14117.14.45100285,030
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php9.35.83.572.68100285,030
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ15127.24.21100285,030

рдирд┐рдЧрд░рд╛рдиреА


рд╕реАрдкреАрдпреВ рдордВрдЭрд▓рд╛ (%)рд╕реАрдкреАрдпреВ рдЕрдзрд┐рдХрддрдо (%)рдореЗрдореЛрд░реА рдореЗрдбрд┐рдпрди (MB)рдореЗрдореЛрд░реА рдЕрдзрд┐рдХрддрдо (MB)
php-рдПрдл рдкреА рдПрдо41.6848.331,006.061,015.09
php-рдкреАрдкреАрдПрдо33.9048.901,046.321,055.00
nginx рдЗрдХрд╛рдИ42.1347.921,006.671,015.73
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ24.0828.061,035.861,044.58
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ46.2352.04939.63948.08
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php19.5723.421,049.831,060.26
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ41.3047.89957.01958.56

рдЧреНрд░рд╛рдлрд┐рдХреНрд╕



рдЪрд╛рд░реНрдЯ 2.1 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп



рдЪрд╛рд░реНрдЯ 2.2 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб



рдЪрд╛рд░реНрдЯ 2.3 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдореЗрдореЛрд░реА рдЦрдкрдд


1000 рдЖрд░рдкреАрдПрд╕


рдлреИрдВрдЯрдо рдпрд╛рдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


 phantom: load_profile: load_type: rps schedule: line(1, 1000, 60s) const(1000, 60s) 

рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдВрдХ



рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рдкреНрд░рддрд┐рд╢рдд


95% (рдПрдордПрд╕)90% (рдПрдордПрд╕)80% (рдПрдордПрд╕)50% (рдПрдордПрд╕)HTTP рдареАрдХ рд╣реИ (%)HTTP рдУрдХреЗ (рдЧрд┐рдирддреА)
php-рдПрдл рдкреА рдПрдо1105011050904019580.6772,627
php-рдПрдл рдкреА рдПрдо-8031501375116515299.8589,895
php-рдкреАрдкреАрдПрдо278527402685254510090030
nginx рдЗрдХрд╛рдИ9880602110090030
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ27157.13.2110090030
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ111011001085106010090030
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php23135.62.8610090030
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ2824191110090030

рдирд┐рдЧрд░рд╛рдиреА


рд╕реАрдкреАрдпреВ рдордВрдЭрд▓рд╛ (%)рд╕реАрдкреАрдпреВ рдЕрдзрд┐рдХрддрдо (%)рдореЗрдореЛрд░реА рдореЗрдбрд┐рдпрди (MB)рдореЗрдореЛрд░реА рдЕрдзрд┐рдХрддрдо (MB)
php-рдПрдл рдкреА рдПрдо12.6678.25990.161,006.56
php-рдПрдл рдкреА рдПрдо-8083.7891.28746.01937.24
php-рдкреАрдкреАрдПрдо66.1691.201,088.741,102.92
nginx рдЗрдХрд╛рдИ78.1188.771,010.151,062.01
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ42.9354.231,010.891,068.48
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ77.6485.66976.441,044.05
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php36.3946.311,018.031,088.23
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ72.1181.81911.28961.62

рдЧреНрд░рд╛рдлрд┐рдХреНрд╕



рдЪрд╛рд░реНрдЯ 3.1 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп



рдЪрд╛рд░реНрдЯ 3.2 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп (рдмрд┐рдирд╛ php-fpm, php-ppm, рд░реЛрдб-рд░рдирд░-рд░рд┐рдмреВрдЯ)



рдЪрд╛рд░реНрдЯ 3.3 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб



рдЪрд╛рд░реНрдЯ 3.4 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдореЗрдореЛрд░реА рдЦрдкрдд


10000 рдЖрд░рдкреАрдПрд╕


рдлреИрдВрдЯрдо рдпрд╛рдВрдбреЗрдХреНрд╕ рдЯреИрдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


 phantom: load_profile: load_type: rps schedule: line(1, 10000, 30s) const(10000, 30s) 

рд╡рд┐рд╕реНрддреГрдд рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдВрдХ



рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЗ рдкреНрд░рддрд┐рд╢рдд


95% (рдПрдордПрд╕)90% (рдПрдордПрд╕)80% (рдПрдордПрд╕)50% (рдПрдордПрд╕)HTTP рдареАрдХ рд╣реИ (%)HTTP рдУрдХреЗ (рдЧрд┐рдирддреА)
php-рдПрдл рдкреА рдПрдо110501105011050188070,466317,107
php-рдПрдл рдкреА рдПрдо-80326031401360114599,619448,301
php-рдкреАрдкреАрдПрдо2755273026952605100450,015
nginx рдЗрдХрд╛рдИ102010101000980100450,015
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ640630615580100450,015
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ1130112011101085100450,015
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php1890109010455899.996449,996
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ3480307012559199.72448,753

рдирд┐рдЧрд░рд╛рдиреА


рд╕реАрдкреАрдпреВ рдордВрдЭрд▓рд╛ (%)рд╕реАрдкреАрдпреВ рдЕрдзрд┐рдХрддрдо (%)рдореЗрдореЛрд░реА рдореЗрдбрд┐рдпрди (MB)рдореЗрдореЛрд░реА рдЕрдзрд┐рдХрддрдо (MB)
php-рдПрдл рдкреА рдПрдо5.5779.35984.47998.78
php-рдПрдл рдкреА рдПрдо-8085.0592.19936.64943.93
php-рдкреАрдкреАрдПрдо66.8682.411,089.311,097.41
nginx рдЗрдХрд╛рдИ86.1493.941,067.711,069.52
рд╕рдбрд╝рдХ рдзрд╛рд╡рдХ73.4182.721,129.481,134.00
рд╕рдбрд╝рдХ-рдЙрдкрд╡рд┐рдЬреЗрддрд╛ рд░рд┐рдмреВрдЯ80.3286.29982.69984.80
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php73.7682.181,101.711,105.06
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-php-рд░рд┐рдмреВрдЯ85.7791.92975.85978.42


рдЪрд╛рд░реНрдЯ 4.1 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп



рдЪрд╛рд░реНрдЯ 4.2 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп (php-fpm рдХреЗ рдмрд┐рдирд╛, php-ppm)



рдЪрд╛рд░реНрдЯ 4.3 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб



рдЪрд╛рд░реНрдЯ 4.4 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд╕рдд рдореЗрдореЛрд░реА рдЦрдкрдд


рдкрд░рд┐рдгрд╛рдо


рдпрд╣рд╛рдВ рднрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рдлрд╝ рд╣реИрдВред рдЪрд╛рд░реНрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдиреЗ 100% рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ред



рдЪрд╛рд░реНрдЯ 5.1 95% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рд╢рдд



рдЪрд╛рд░реНрдЯ 5.2 95% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рд╢рдд (рдмрд┐рдирд╛ php-fpm)



рдЧреНрд░рд╛рдлрд╝ 5.3 рдЕрдзрд┐рдХрддрдо рд╕реАрдкреАрдпреВ рд▓реЛрдб



рдЪрд╛рд░реНрдЯ 5.4 рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реА рдЦрдкрдд


рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди, (рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛), рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдиреЗрдЧреНрдиреЗрдХреНрд╕ рдпреВрдирд┐рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрдХ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЧрддрд┐ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдВрдкрдиреА рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред


рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░, рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдпреБрдкреАрдбреА
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП 1000/10000 рдЖрд░рдкреАрдПрд╕ рдиреЗ php-fpm-80 рд╕реЗрд╡рд╛ рдХреЛ рдЬреЛрдбрд╝рд╛
рдЗрд╕рдХреЗ рд▓рд┐рдП php-fpm рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 pm = dynamic pm.max_children = 80 

Source: https://habr.com/ru/post/hi431818/


All Articles