День добрый!
Мы перенесли портал из виртуальной машины, где всё работало, но ооочень медленно (скорость - 4,5) на хост-машину под ОС Debian 6. nginx установлен из исходников с добавлением push_stream_module. Конфигурация web - сервера nginx_1.7.9+apache2-2.2.16 + php-5.3.3-7 +apc. Ошибок конфигурации не показывает, все работает, скорость стала 22, но чат, а соответственно десктопное приложение не работают. В конфиге nginx ошибок нет, только сообщение: Using 262144KiB of shared memory for push stream module on zone: push_stream_module in /etc/nginx/bx/conf/im_settings.conf:5. Образцы конфигов nginx брал из рабочей виртуальной машины, пытался адаптировать под debian, но к сожалению не получается, т.к. недостаточно знаний по директивам nginx. Подскажите пожалуйста в какую сторону копать? Привожу конфиги.
конфиг nginx:
# Пользователь для nginx
user www-data;
pid /var/run/nginx.pid;
# Изменяет количество процессов, которое должен использовать Nginx. Ставил равным количеству ядер процессора (это же в случае auto)
worker_processes auto;
#Устанавливает ограничение на максимальное количество открытых файлов для процессов.
worker_rlimit_nofile 100000;
events {
# устанавливает максимальное количество одновременных соединений на одном рабочем процессе.
worker_connections 2048;
# ринимать столько соединений, сколько возможно после получения уведомления о новом соединении.
multi_accept on;
# метод обработки vs использetv для мультиплексирования клиентов на потоках. Если вы используете Linux 2.6+, то вы должны использовать Epoll.
use epoll;
}
http {
# Позволяет использовать sendfile(). Это функци ОС, она копирует данные с диска сразу в кэш ОС
# и так как копирование происходит в ядре ОС, sendfile() более эффетивен чем read()
sendfile on;
# Позволяет отправлять все заголовки одним пакетом, а не один за другим.
tcp_nopush on;
# Заставляет Nginx не буферизировать данные и отправлять маленькими, короткими очередями - утанавливайте этот параметр только для приложений, которые часто отправляют небольшие пакеты данных, не получая немедленный ответ, где требуется своевременная доставка данных.
tcp_nodelay on;
###### Настройки для загрузки больших файлов #####
client_max_body_size 1024m;
client_body_buffer_size 4m;
##### Logging Settings #####
# access_log off;
# устанавливает логирование только критических ошибок (флаг crit)
# error_log /var/log/nginx/error.log crit;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
##### таймауты #####
# таймаут для keep-alive соединения. Сервер будет закрывать соединения по истечению этого времени. Мы становим его малым, так как каждое соединение держит открытым файл.
keepalive_timeout 20;
# устанавливает таймаут для заголовка запроса. Установим их на таком же низком уровне.
client_header_timeout 20;
# устанавливает таймаут для тела запроса. Установим их на таком же низком уровне.
client_body_timeout 20;
# закрывает соединения для не отвечающих клиентов. Это позволит высвободить всю память, связанную с клиентом.
reset_timedout_connection on;
# устанавливает таймаут ответа клиенту. Этот таймаут не применяется ко всей передаче, а только между двумя последовательными операциями чтения. Если клиент не читал никаких данных для в это рвемя, то Nginx разрывает связь.
send_timeout 20;
# Здесь мы используем его для загрузки списка MIME-типов, который будет использован далее.
include /etc/nginx/mime.types;
# устанавливает MIME-тип по-умолчанию, который будет включен в наш заголовок.
#default_type text/html;
default_type application/octet-stream;
# кодировка по-умолчанию.
charset UTF-8;
##### Gzip Settings #####
# включает сжатие отсылаемых данных. Это позволит экономить на объеме отправляемых данных.
gzip on;
# поиск предварительно сжатых файлов. Этот парамет (в нашем примере закомметирован) требует предварительного сжатия ваших файлов, но не позволяет использовать максимально возможную степень сжати
# gzip_static on;
# позволяет или запрещает сжатие ответа на основе запроса/ответа. Мы установим его как any, чтобы сжимать и все запросы.
gzip_proxied any;
# Минимальное количество байт необходимое для сжатия. Если запрос занимает менее 256 байт, то мы не будем сжимать его, так как это будет замедлять общий процесс обработки запроса.
gzip_min_length 256;
# Степень сжатия данных. Возможное значение от 1 до 9. 9 самый медленный, но на выходе данные с самым маленьким объемом. Установим 4, чтобы сбалансировать скорость и степерь сжатия.
gzip_comp_level 4;
# какие MIME-типы данных сжимать.
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##### Опции кэширования #####
# максимальное количество записей в кэше, а также время кэширования. Установим наш максимум относительно высоким и избавимся от кэша через 20 сек
open_file_cache max=65000 inactive=20s;
# интервал, когда необходимо проверять актуальность информацию о элементе в open_file_cache
open_file_cache_valid 30s;
# минимальное число обращений к файлу в течение времени, указанного в директиве inactive параметра open_file_cache.
open_file_cache_min_uses 2;
# будет ли кэшироваться ошибки при поиске файлов.
open_file_cache_errors on;
###### Virtual Host Configs #####
# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
#### Подключение конфигов битрикс #####
include /etc/nginx/bx/*.conf;
# Настройка общих параметров модуля nginx-push-stream-module
include bx/conf/im_settings.conf;
# Настройка общих сайтов
include bx/site_enabled/*.conf;
# Настройка дополнительных сайтов
include bx/site_ext_enabled/*.conf;
}
конфиг push.conf
# Nonsecure server for reading personal channels. Use secure server instead.
server {
# nginx-push-stream-module server for push & pull
listen 8893;
server_name _;
# Include error handlers
include bx/conf/errors.conf;
# Include im subscrider handlers
include bx/conf/im_subscrider.conf;
location ^~ / { deny all; }
}
# SSL enabled server for reading personal channels
server {
listen 8894;
server_name _;
include bx/conf/ssl.conf;
# Include error handlers
include bx/conf/errors.conf;
# Include im subscrider handlers
include bx/conf/im_subscrider.conf;
location ^~ / { deny all; }
}
# Server to push messages to user channels
server {
listen 127.0.0.1:8895;
server_name _;
location ^~ /bitrix/pub/ {
push_stream_publisher admin;
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_store_messages on;
allow 127.0.0.0/8;
deny all;
}
location ^~ / { deny all; }
# Include error handlers
include bx/conf/errors.conf;
}
конфиг im_settings.conf
Common settings for nginx-push-stream-module
push_stream_channels_path $1;
push_stream_shared_memory_size 256M;
push_stream_max_subscribers_per_channel 50;
push_stream_max_messages_stored_per_channel 1000;
push_stream_max_channel_id_length 32;
push_stream_max_number_of_channels 100000;
#push_stream_shared_memory_cleanup_objects_ttl 60;
push_stream_message_ttl 86400;
конфиг im_subscrider.conf
# Location for long-polling connections
location ^~ /bitrix/sub {
# we don't use callback and droppped it (XSS)
if ( $arg_callback ) {
return 400;
}
push_stream_subscriber long-polling;
push_stream_allowed_origins "*";
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_last_received_message_tag $arg_tag;
push_stream_longpolling_connection_ttl 40;
push_stream_authorized_channels_only on;
push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}
# Location for websocet connections
location ^~ /bitrix/subws/ {
push_stream_subscriber websocket;
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_websocket_allow_publish off;
push_stream_ping_message_interval 40s;
push_stream_authorized_channels_only on;
push_stream_last_received_message_tag "$arg_tag";
push_stream_last_received_message_time "$arg_time";
push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}
Мы перенесли портал из виртуальной машины, где всё работало, но ооочень медленно (скорость - 4,5) на хост-машину под ОС Debian 6. nginx установлен из исходников с добавлением push_stream_module. Конфигурация web - сервера nginx_1.7.9+apache2-2.2.16 + php-5.3.3-7 +apc. Ошибок конфигурации не показывает, все работает, скорость стала 22, но чат, а соответственно десктопное приложение не работают. В конфиге nginx ошибок нет, только сообщение: Using 262144KiB of shared memory for push stream module on zone: push_stream_module in /etc/nginx/bx/conf/im_settings.conf:5. Образцы конфигов nginx брал из рабочей виртуальной машины, пытался адаптировать под debian, но к сожалению не получается, т.к. недостаточно знаний по директивам nginx. Подскажите пожалуйста в какую сторону копать? Привожу конфиги.
конфиг nginx:
# Пользователь для nginx
user www-data;
pid /var/run/nginx.pid;
# Изменяет количество процессов, которое должен использовать Nginx. Ставил равным количеству ядер процессора (это же в случае auto)
worker_processes auto;
#Устанавливает ограничение на максимальное количество открытых файлов для процессов.
worker_rlimit_nofile 100000;
events {
# устанавливает максимальное количество одновременных соединений на одном рабочем процессе.
worker_connections 2048;
# ринимать столько соединений, сколько возможно после получения уведомления о новом соединении.
multi_accept on;
# метод обработки vs использetv для мультиплексирования клиентов на потоках. Если вы используете Linux 2.6+, то вы должны использовать Epoll.
use epoll;
}
http {
# Позволяет использовать sendfile(). Это функци ОС, она копирует данные с диска сразу в кэш ОС
# и так как копирование происходит в ядре ОС, sendfile() более эффетивен чем read()
sendfile on;
# Позволяет отправлять все заголовки одним пакетом, а не один за другим.
tcp_nopush on;
# Заставляет Nginx не буферизировать данные и отправлять маленькими, короткими очередями - утанавливайте этот параметр только для приложений, которые часто отправляют небольшие пакеты данных, не получая немедленный ответ, где требуется своевременная доставка данных.
tcp_nodelay on;
###### Настройки для загрузки больших файлов #####
client_max_body_size 1024m;
client_body_buffer_size 4m;
##### Logging Settings #####
# access_log off;
# устанавливает логирование только критических ошибок (флаг crit)
# error_log /var/log/nginx/error.log crit;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
##### таймауты #####
# таймаут для keep-alive соединения. Сервер будет закрывать соединения по истечению этого времени. Мы становим его малым, так как каждое соединение держит открытым файл.
keepalive_timeout 20;
# устанавливает таймаут для заголовка запроса. Установим их на таком же низком уровне.
client_header_timeout 20;
# устанавливает таймаут для тела запроса. Установим их на таком же низком уровне.
client_body_timeout 20;
# закрывает соединения для не отвечающих клиентов. Это позволит высвободить всю память, связанную с клиентом.
reset_timedout_connection on;
# устанавливает таймаут ответа клиенту. Этот таймаут не применяется ко всей передаче, а только между двумя последовательными операциями чтения. Если клиент не читал никаких данных для в это рвемя, то Nginx разрывает связь.
send_timeout 20;
# Здесь мы используем его для загрузки списка MIME-типов, который будет использован далее.
include /etc/nginx/mime.types;
# устанавливает MIME-тип по-умолчанию, который будет включен в наш заголовок.
#default_type text/html;
default_type application/octet-stream;
# кодировка по-умолчанию.
charset UTF-8;
##### Gzip Settings #####
# включает сжатие отсылаемых данных. Это позволит экономить на объеме отправляемых данных.
gzip on;
# поиск предварительно сжатых файлов. Этот парамет (в нашем примере закомметирован) требует предварительного сжатия ваших файлов, но не позволяет использовать максимально возможную степень сжати
# gzip_static on;
# позволяет или запрещает сжатие ответа на основе запроса/ответа. Мы установим его как any, чтобы сжимать и все запросы.
gzip_proxied any;
# Минимальное количество байт необходимое для сжатия. Если запрос занимает менее 256 байт, то мы не будем сжимать его, так как это будет замедлять общий процесс обработки запроса.
gzip_min_length 256;
# Степень сжатия данных. Возможное значение от 1 до 9. 9 самый медленный, но на выходе данные с самым маленьким объемом. Установим 4, чтобы сбалансировать скорость и степерь сжатия.
gzip_comp_level 4;
# какие MIME-типы данных сжимать.
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##### Опции кэширования #####
# максимальное количество записей в кэше, а также время кэширования. Установим наш максимум относительно высоким и избавимся от кэша через 20 сек
open_file_cache max=65000 inactive=20s;
# интервал, когда необходимо проверять актуальность информацию о элементе в open_file_cache
open_file_cache_valid 30s;
# минимальное число обращений к файлу в течение времени, указанного в директиве inactive параметра open_file_cache.
open_file_cache_min_uses 2;
# будет ли кэшироваться ошибки при поиске файлов.
open_file_cache_errors on;
###### Virtual Host Configs #####
# include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
#### Подключение конфигов битрикс #####
include /etc/nginx/bx/*.conf;
# Настройка общих параметров модуля nginx-push-stream-module
include bx/conf/im_settings.conf;
# Настройка общих сайтов
include bx/site_enabled/*.conf;
# Настройка дополнительных сайтов
include bx/site_ext_enabled/*.conf;
}
конфиг push.conf
# Nonsecure server for reading personal channels. Use secure server instead.
server {
# nginx-push-stream-module server for push & pull
listen 8893;
server_name _;
# Include error handlers
include bx/conf/errors.conf;
# Include im subscrider handlers
include bx/conf/im_subscrider.conf;
location ^~ / { deny all; }
}
# SSL enabled server for reading personal channels
server {
listen 8894;
server_name _;
include bx/conf/ssl.conf;
# Include error handlers
include bx/conf/errors.conf;
# Include im subscrider handlers
include bx/conf/im_subscrider.conf;
location ^~ / { deny all; }
}
# Server to push messages to user channels
server {
listen 127.0.0.1:8895;
server_name _;
location ^~ /bitrix/pub/ {
push_stream_publisher admin;
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_store_messages on;
allow 127.0.0.0/8;
deny all;
}
location ^~ / { deny all; }
# Include error handlers
include bx/conf/errors.conf;
}
конфиг im_settings.conf
Common settings for nginx-push-stream-module
push_stream_channels_path $1;
push_stream_shared_memory_size 256M;
push_stream_max_subscribers_per_channel 50;
push_stream_max_messages_stored_per_channel 1000;
push_stream_max_channel_id_length 32;
push_stream_max_number_of_channels 100000;
#push_stream_shared_memory_cleanup_objects_ttl 60;
push_stream_message_ttl 86400;
конфиг im_subscrider.conf
# Location for long-polling connections
location ^~ /bitrix/sub {
# we don't use callback and droppped it (XSS)
if ( $arg_callback ) {
return 400;
}
push_stream_subscriber long-polling;
push_stream_allowed_origins "*";
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_last_received_message_tag $arg_tag;
push_stream_longpolling_connection_ttl 40;
push_stream_authorized_channels_only on;
push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}
# Location for websocet connections
location ^~ /bitrix/subws/ {
push_stream_subscriber websocket;
push_stream_channels_path $arg_CHANNEL_ID;
push_stream_websocket_allow_publish off;
push_stream_ping_message_interval 40s;
push_stream_authorized_channels_only on;
push_stream_last_received_message_tag "$arg_tag";
push_stream_last_received_message_time "$arg_time";
push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}