Нужна помощь по настройке сервера

(Ответов: 10, Просмотров: 993)
Страница 1 из 2 12 Последняя
  1. Опытный Аватар для chups
    • Регистрация: 03.08.2012
    • Сообщений: 355
    • Репутация: 47
    Подскажите пожалуйста, в чем может быть проблема.

    DO 2 ядра, 2 гига, SSD. 300 тел онлайна кладут сервак.
    Данные по htop: память - 1.6 из 2 GB занято, 2 ядра по 100% забиты. Стоит nginx + php-fpm 5.6 и mysql 5.6

    Если равномерно идет трафик (15-20к) и онлайн 200-250 - все норм. Как только людей в онлайне становится более 300 - сервак падает.
    Очень нужна помощь!
    • 0
  2. Опытный Аватар для WSairus
    • Регистрация: 25.01.2013
    • Сообщений: 334
    • Репутация: 71
    chups, вы предлагаете гадание на кофейной гуще? Хорошо бы знать какой именно процесс падает (предположу что mySQL из-за нехватки памяти). Нет данных по доступному кешу, использованию свопа, ожиданию чтения (wa). Приложите хоть пару скринов (top например и конфиг nginx в спойлерах).
    Если такая большая нагрузка - можно попробовать настроить nginx - посмотрите есть ли кеширование статики на клиенте (expires), включено ли сжатие (можно попробовать отключить или снизить для снижения нагрузки CPU).
    Скорее всего нужно настраивать и mySQL, смотреть количество подключений, отлавливать и оптимизировать тяжелые запросы, но тут я не особо разбираюсь.
    • 0
  3. Опытный Аватар для chups
    • Регистрация: 03.08.2012
    • Сообщений: 355
    • Репутация: 47
    База не падает. Симптомы: очень долгая загрузка страницы (~40 секунд). Клиентское кеширование включено. Своп не используется.
    Скрины дать пока не могу. Немного позже выложу.
    • 0
  4. Опытный Аватар для WSairus
    • Регистрация: 25.01.2013
    • Сообщений: 334
    • Репутация: 71
    Тогда (хотя информации явно недостаточно), предположу, что оптимизировать уже нечего, ожидание связано со 100% загрузкой процессоров (обработка скриптов).
    • 0
  5. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    chups, а цмс какая?
    • 0
  6. Опытный Аватар для chups
    • Регистрация: 03.08.2012
    • Сообщений: 355
    • Репутация: 47
    WSairus, может я что-то упустил? С радостью предоставлю...

    Конфиг nginx


    server {

    gzip on;
    gzip_min_length 1000;
    gzip_proxied any;
    gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/json application/javascript;
    gzip_disable "msie6";
    gzip_comp_level 5;
    gzip_vary on;

    location ~ \.php$ {
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
    if ( -f $request_filename ) {
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/tmp/wwwpool.sock;
    }
    fastcgi_param SCRIPT_FILENAME /public_html$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
    }
    [свернуть]

    php-fpm


    Start a new pool named 'www'.
    [www]

    ; The address on which to accept FastCGI requests.
    ; Valid syntaxes are:
    ; 'ip.add.re.ssort' - to listen on a TCP socket to a specific address on
    ; a specific port;
    ; 'port' - to listen on a TCP socket to all addresses on a
    ; specific port;
    ; '/path/to/unix/socket' - to listen on a unix socket.
    ; Note: This value is mandatory.
    ; listen = 127.0.0.1:9000
    listen = /tmp/wwwpool.sock

    ; Set listen(2) backlog. A value of '-1' means unlimited.
    ; Default Value: -1
    ;listen.backlog = -1
    .
    ; List of ipv4 addresses of FastCGI clients which are allowed to connect.
    ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
    ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
    ; must be separated by a comma. If this value is left blank, connections will be
    ; accepted from any ip address.
    ; Default Value: any
    ; listen.allowed_cliDDDDDents = 127.0.0.1

    ; Set permissions for unix socket, if one is used. In Linux, read/write
    ; permissions must be set in order to allow connections from a web server. Many
    ; BSD-derived systems allow connections regardless of permissions..
    ; Default Values: user and group are set as the running user
    ; mode is set to 0660
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
    ; Unix user/group of processes
    ; Note: The user is mandatory. If the group is not set, the default user's group
    ; will be used.
    ; RPM: apache Choosed to be able to access some dir as httpd
    user = apache
    ; RPM: Keep a group allowed to write in log dir.
    group = apache

    ; Choose how the process manager will control the number of child processes.
    ; Possible Values:
    ; static - a fixed number (pm.max_children) of child processes;
    ; dynamic - the number of child processes are set dynamically based on the
    ; following directives:
    ; pm.max_children - the maximum number of children that can
    ; be alive at the same time.
    ; pm.start_servers - the number of children created on startup.
    ; pm.min_spare_servers - the minimum number of children in 'idle'
    ; state (waiting to process). If the number
    ; of 'idle' processes is less than this
    ; number then some children will be created.
    ; pm.max_spare_servers - the maximum number of children in 'idle'
    ; state (waiting to process). If the number
    ; of 'idle' processes is greater than this
    ; number then some children will be killed.
    ; Note: This value is mandatory.
    pm = dynamic
    ; The number of child processes to be created when pm is set to 'static' and the
    ; maximum number of child processes to be created when pm is set to 'dynamic'.
    ; This value sets the limit on the number of simultaneous requests that will be
    ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
    ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
    ; CGI.
    ; Note: Used when pm is set to either 'static' or 'dynamic'
    ; Note: This value is mandatory.
    pm.max_children = 500

    ; The number of child processes created on startup.
    ; Note: Used only when pm is set to 'dynamic'
    ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
    pm.start_servers = 5

    ; The desired minimum number of idle server processes.
    ; Note: Used only when pm is set to 'dynamic'
    ; Note: Mandatory when pm is set to 'dynamic'
    pm.min_spare_servers = 5

    ; The desired maximum number of idle server processes.
    ; Note: Used only when pm is set to 'dynamic'
    ; Note: Mandatory when pm is set to 'dynamic'
    pm.max_spare_servers = 15
    .
    ; The number of requests each child process should execute before respawning.
    ; This can be useful to work around memory leaks in 3rd party libraries. For
    ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
    ; Default Value: 0
    pm.max_requests = 500
    ; The URI to view the FPM status page. If this value is not set, no URI will be
    ; recognized as a status page. By default, the status page shows the following
    ; information:
    ; accepted conn - the number of request accepted by the pool;
    ; pool - the name of the pool;
    ; process manager - static or dynamic;
    ; idle processes - the number of idle processes;
    ; active processes - the number of active processes;
    ; total processes - the number of idle + active processes.
    ; The values of 'idle processes', 'active processes' and 'total processes' are
    ; updated each second. The value of 'accepted conn' is updated in real time.
    ; Example output:
    ; accepted conn: 12073
    ; pool: www
    ; process manager: static
    ; idle processes: 35
    ; active processes: 65
    ; total processes: 100
    ; By default the status page output is formatted as text/plain. Passing either
    ; 'html' or 'json' as a query string will return the corresponding output
    ; syntax. Example:
    ; http://www.foo.bar/status
    ; http://www.foo.bar/status?json
    ; http://www.foo.bar/status?html
    ; Note: The value must start with a leading slash (/). The value can be
    ; anything, but it may not be a good idea to use the .php extension or it
    ; may conflict with a real PHP file.
    ; Default Value: not set.
    ;pm.status_path = /status
    ; The ping URI to call the monitoring page of FPM. If this value is not set, no
    ; URI will be recognized as a ping page. This could be used to test from outside
    ; that FPM is alive and responding, or to
    ; - create a graph of FPM availability (rrd or such);
    ; - remove a server from a group if it is not responding (load balancing);
    ; - trigger alerts for the operating team (24/7).
    ; Note: The value must start with a leading slash (/). The value can be
    ; anything, but it may not be a good idea to use the .php extension or it
    ; may conflict with a real PHP file.
    ; Default Value: not set
    ;ping.path = /ping

    ; This directive may be used to customize the response of a ping request. The
    ; response is formatted as text/plain with a 200 response code.
    ; Default Value: pong
    ;ping.response = pong
    .
    ; The timeout for serving a single request after which the worker process will
    ; be killed. This option should be used when the 'max_execution_time' ini option
    ; does not stop script execution for some reason. A value of '0' means 'off'.
    ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
    ; Default Value: 0
    ;request_terminate_timeout = 0
    .
    ; The timeout for serving a single request after which a PHP backtrace will be
    ; dumped to the 'slowlog' file. A value of '0s' means 'off'.
    ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
    ; Default Value: 0
    ;request_slowlog_timeout = 0
    ; The log file for slow requests
    ; Default Value: not set
    ; Note: slowlog is mandatory if request_slowlog_timeout is set
    slowlog = /var/log/php-fpm/www-slow.log
    .
    ; Set open file descriptor rlimit.
    ; Default Value: system defined value
    ;rlimit_files = 1024
    .
    ; Set max core size rlimit.
    ; Possible Values: 'unlimited' or an integer greater or equal to 0
    ; Default Value: system defined value
    ;rlimit_core = 0
    .
    ; Chroot to this directory at the start. This value must be defined as an
    ; absolute path. When this value is not set, chroot is not used.
    ; Note: chrooting is a great security feature and should be used whenever.
    ; possible. However, all PHP paths will be relative to the chroot
    ; (error_log, sessions.save_path, ...).
    ; Default Value: not set
    ;chroot =.
    .
    ; Chdir to this directory at the start. This value must be an absolute path.
    ; Default Value: current directory or / when chroot
    ;chdir = /var/www
    .
    ; Redirect worker stdout and stderr into main error log. If not set, stdout and
    ; stderr will be redirected to /dev/null according to FastCGI specs.
    ; Default Value: no
    catch_workers_output = yes
    ; Limits the extensions of the main script FPM will allow to parse. This can
    ; prevent configuration mistakes on the web server side. You should only limit
    ; FPM to .php extensions to prevent malicious users to use other extensions to
    ; exectute php code.
    ; Note: set an empty value to allow all extensions.
    ; Default Value: .php
    ;security.limit_extensions = .php .php3 .php4 .php5

    ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
    ; the current environment.
    ; Default Value: clean env
    ;env[HOSTNAME] = $HOSTNAME
    ;env[PATH] = /usr/local/bin:/usr/bin:/bin
    ;env[TMP] = /tmp
    ;env[TMPDIR] = /tmp
    ;env[TEMP] = /tmp

    ; Additional php.ini defines, specific to this pool of workers. These settings
    ; overwrite the values previously defined in the php.ini. The directives are the
    ; same as the PHP SAPI:
    ; php_value/php_flag - you can set classic ini defines which can
    ; be overwritten from PHP call 'ini_set'..
    ; php_admin_value/php_admin_flag - these directives won't be overwritten by
    ; PHP call 'ini_set'
    ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

    ; Defining 'extension' will load the corresponding shared extension from
    ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
    ; overwrite previously defined php.ini values, but will append the new value
    ; instead.

    ; Default Value: nothing is defined by default except the values in php.ini and
    ; specified at startup with the -d argument
    ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
    ;php_flag[display_errors] = off
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on
    ;php_admin_value[memory_limit] = 128M
    ; Set session path to a directory owned by process user
    php_value[session.save_handler] = files
    php_value[session.save_path] = /var/lib/php/session
    php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
    php_admin_value[date.timezone] = 'Europe/Moscow'
    [свернуть]

    Вывод htop


    Нажмите на изображение для увеличения.  Название:	?????? ?????? ? 2015-02-23 20#3a25#3a55.jpg  Просмотров:	9  Размер:	96.6 Кб  ID:	17019
    [свернуть]


    brainix, CMS Question2Answer
    • 0
  7. Гуру Аватар для Ems
    • Регистрация: 24.05.2011
    • Сообщений: 2,032
    • Репутация: 663
    300 онлайн - это гости или залогенные пользователи сайта?
    Облачный хостинг из TOP-3 - от 1 Gb ОЗУ, от 25 GB SSD.
    • 0
  8. Опытный Аватар для chups
    • Регистрация: 03.08.2012
    • Сообщений: 355
    • Репутация: 47
    Ems, гости/уники. Залогиненых за весь день человек 300 максимум. Основная масса - гости.
    • 0
  9. Опытный Аватар для WSairus
    • Регистрация: 25.01.2013
    • Сообщений: 334
    • Репутация: 71
    chups, по nginx:
    1) Не увидел worker_processes (выше секции server) - должно быть 2 (по числу процессоров);
    2) Не увидел sendfile on; (Если версия nginx поддерживает и ОС тоже).
    3) Попробуйте убрать gzip (закомментировать) и посмотреть на нагрузку - должен сильно разгрузиться процессор за счет канала естественно.
    4) Попробуйте keepalive_timeout 30; (число можете подобрать сами, от 15 до 60 - в зависимости от наличия AJAX и прочих динамических вещей).
    5) server_tokens off; для отключения отображения версии (безопасность )

    По настройкам php-fpm проблем не вижу. Памяти тоже достаточно. Мне кажется что висел у Вас проц, хотя, нельзя исключить и mySQL - посмотрите логи медленных запросов... или ковырять CMS . Может еще кто что знает, что увидел - написал.
    • 1

    Спасибо сказали:

    chups(24.02.2015),
  10. Гуру Аватар для Ems
    • Регистрация: 24.05.2011
    • Сообщений: 2,032
    • Репутация: 663
    Ещё вариант поставить Varnish, по умолчанию будут отдаваться закешированные страницы пользователям, а залогененым live-версия. Правда нужно настроить сколько ему выделять памяти и как часто обновлять кеш. Нагрузка должна снизиться заметно.
    Облачный хостинг из TOP-3 - от 1 Gb ОЗУ, от 25 GB SSD.
    • 1

    Спасибо сказали:

    chups(24.02.2015),
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Кто работал с AdFox? Нужна помощь в настройке
PPC и контекстная реклама 1 30.09.2014 11:35
Нужна помощь в настройке VPS хостинга!
Хостинг и Серверы 7 14.08.2014 06:10
Нужна помощь. Выполняются скрипты, которые грузят сервера
Хостинг и Серверы 1 01.06.2013 02:05
Нужна помощь в настройке редиректа 301
Вопросы от новичков 0 25.09.2012 21:01
Нужна помощь по настройке сайта!
Создание сайтов 3 24.04.2011 12:32

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры