512 мегабайт это в целом самый минимальный размер озу который можно придумать, конечно этого мало для руби, подымите до 4 гигов и посмотрите как оно будет работать.
Обычно такое случается когда переполняются какие нибудь сокеты на виртуалке, а они бывают на ней урезанные, ну или сосед захавал их если скажем cgroups или openvz.
все давно делает через try files
плохой пример
location ~ \.php$ {
<------> try_files $uri =404;
fastcgi_pass unix:/opt/pifpm/fpmsockets/fashions.sock;
fastcgi_index index.php;
include fastcgi_params;
Самый простой способ это юзать два php-fpm на разных портах, обновили код в одной директории, переключили nginx на другой порт и сделали ему reload
А в nginx reload работает без сбрасывания клиентов.
делов настроить минут на 30.
У вас всего два worker_processes
и worker_connections 65535;
если у вас очень много легального трафика то может просто не влезает?
Увеличьте worker_processes