Skip to content

Push module causing error #73

Open
hmoen opened this Issue Nov 28, 2012 · 1 comment

2 participants

@hmoen
hmoen commented Nov 28, 2012

nginx version: nginx/1.2.4

Our site locks up after a little while and displays the following errors in the log:

Output of nginx.con error log below:
2012/11/28 13:53:34 [info] 18681#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:186
2012/11/28 13:53:34 [alert] 18688#0: epoll_ctl(1, 0) failed (1: Operation not permitted)
2012/11/28 13:53:34 [alert] 18688#0: failed to register channel handler while initializing push module worker (1: Operation not permitted)
2012/11/28 13:53:34 [alert] 18687#0: epoll_ctl(1, 0) failed (1: Operation not permitted)
2012/11/28 13:53:34 [alert] 18687#0: failed to register channel handler while initializing push module worker (1: Operation not permitted)
2012/11/28 13:53:34 [alert] 10860#0: cache manager process 18687 exited with fatal code 2 and cannot be respawned
2012/11/28 14:16:38 [info] 19044#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:186

Site .conf file:

HTTP server.

server {
#listen 80; # IPv4
listen 8001; # IPv4
## Replace the IPv6 address by your own address. The address below
## was stolen from the wikipedia page on IPv6.
##listen [fe80::1031:3dff:fe2c:600b]:8001 ipv6only=on;

server_name saludmedica.com;
limit_conn arbeit 32;

## Access and error logs.
access_log /var/log/nginx/saludmedica/access.log;
error_log  /var/log/nginx/saludmedica/error.log debug;

## Forward real user ip
set_real_ip_from 127.0.0.1;
real_ip_header X-Real-Forwarded-For;

## See the blacklist.conf file at the parent dir: /etc/nginx.
## Deny access based on the User-Agent header.
if ($bad_bot) {
    return 444;
}
## Deny access based on the Referer header.
if ($bad_referer) {
    return 444;
}

## Protection against illegal HTTP methods. Out of the box only HEAD,
## GET and POST are allowed.
if ($not_allowed_method) {
    return 405;
}

## Filesystem root of the site and index.
root /var/www/beta;
index index.php;

## If you're using a Nginx version greater or equal to 1.1.4 then
## you can use keep alive connections to the upstream be it
## FastCGI or Apache. If that's not the case comment out the line below.
#fastcgi_keep_conn on; # keep alive to the FCGI upstream

## Uncomment if you're proxying to Apache for handling PHP.
#proxy_http_version 1.1; # keep alive to the Apache upstream

## Configuration for instant search block
location ^~ /sites/all/instant/ {
    location ~ ^/sites/all/instant/(?:query|Document|Response|apc)\.php$ {
        include fastcgi_drupal.conf;
        fastcgi_param  QUERY_STRING $query_string;
        fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass phpcgi;
    } 
}

################################################################
### Generic configuration: for most Drupal 7 sites.
################################################################
include sites-available/drupal.conf;

################################################################
### Generic configuration: for most Drupal 6 sites.
################################################################
# include sites-available/drupal6.conf;

#################################################################
### Configuration for Drupal 7 sites that use boost.
#################################################################
#include sites-available/drupal_boost.conf;

#################################################################
### Configuration for Drupal 6 sites that use boost.
#################################################################
#include sites-available/drupal_boost6.conf;

#################################################################
### Configuration for updating the site via update.php and running
### cron externally. If you don't use drush for running cron use
### the configuration below.
#################################################################
include sites-available/drupal_cron_update.conf;

## For upload progress to work. From the README of the
## filefield_nginx_progress module.
location ~ ^(.*)/x-progress-id:(\w*) {
    return 302 $1?X-Progress-ID=$2;
}

location ^~ /progress {
    report_uploads uploads;
}

## Including the php-fpm status and ping pages config.
## Uncomment to enable if you're running php-fpm.
include php_fpm_status_vhost.conf;

## Including the Nginx stub status page for having stats about
## Nginx activity: http://wiki.nginx.org/HttpStubStatusModule.
include nginx_status_vhost.conf;

} # HTTP server

HTTPS server.

server {
listen 443 ssl;
## Replace the IPv6 address by your own address. The address below
## was stolen from the wikipedia page on IPv6.
#listen [fe80::1031:3dff:fe2c:600b]:443 ssl ipv6only=on;

server_name saludmedica.com;
limit_conn arbeit 32;

## Access and error logs.
access_log /var/log/nginx/saludmedica/ssl_access.log;
error_log  /var/log/nginx/saludmedica/ssl_error.log debug;

## Forward real user ip
set_real_ip_from 127.0.0.1;
real_ip_header X-Real-Forwarded-For;

location ^~ /sites/all/instant/ {
location ~ ^/sites/all/instant/(?:query|Document|Response).php$ {
include fastcgi_drupal.conf;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass phpcgi;
}
}

## Keep alive timeout set to a greater value for SSL/TLS.
keepalive_timeout 75 75;

## See the keepalive_timeout directive in nginx.conf.
## Server certificate and key.
ssl_certificate /etc/ssl/certs/saludmedica.com.crt;
ssl_certificate_key /etc/ssl/private/saludmedica.com.key.nopass;

## Strict Transport Security header for enhanced security. See
## http://www.chromium.org/sts. I've set it to 2 hours; set it to
## whichever age you want.
add_header Strict-Transport-Security "max-age=7200";

root /var/www/beta;
index index.php;

## If you're using a Nginx version greater or equal to 1.1.4 then
## you can use keep alive connections to the upstream be it
## FastCGI or Apache. If that's not the case comment out the line below.
fastcgi_keep_conn on; # keep alive to the FCGI upstream

## Uncomment if you're proxying to Apache for handling PHP.
#proxy_http_version 1.1; # keep alive to the Apache upstream

## See the blacklist.conf file at the parent dir: /etc/nginx.
## Deny access based on the User-Agent header.
if ($bad_bot) {
    return 444;
}
## Deny access based on the Referer header.
if ($bad_referer) {
    return 444;
}

## Protection against illegal HTTP methods. Out of the box only HEAD,
## GET and POST are allowed.
if ($not_allowed_method) {
    return 405;
}

################################################################
### Generic configuration: for most Drupal 7 sites.
################################################################
include sites-available/drupal.conf;

################################################################
### Generic configuration: for most Drupal 6 sites.
################################################################
# include sites-available/drupal6.conf;

#################################################################
### Configuration for Drupal 7 sites that use boost.
#################################################################
#include sites-available/drupal_boost.conf;

#################################################################
### Configuration for Drupal 6 sites that use boost.
#################################################################
#include sites-available/drupal_boost6.conf;

#################################################################
### Configuration for updating the site via update.php and running
### cron externally. If you don't use drush for running cron use
### the configuration below.
#################################################################
include sites-available/drupal_cron_update.conf;

## For upload progress to work. From the README of the
## filefield_nginx_progress module.
location ~ ^(.*)/x-progress-id:(\w*) {
    return 302 $1?X-Progress-ID=$2;
}

location ^~ /progress {
    report_uploads uploads;
}

## Including the php-fpm status and ping pages config.
## Uncomment to enable if you're running php-fpm.
#include php_fpm_status.conf;

## Including the Nginx stub status page for having stats about
## Nginx activity: http://wiki.nginx.org/HttpStubStatusModule.
include nginx_status_vhost.conf;

} # HTTPS server

@perusio
Owner
perusio commented Nov 28, 2012

This has all the symptoms of a problem specific to the push module. Try disabling epoll and see if you can reproduce it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.