[ЗАКРЫТО] разобраться с NginX

domov0y
Имеет смысл использовать команду microtime
Natrio
Ищите виновника нагрузки среди php-скриптов
исходные данные: проприетарная cms, т.е. насколько понимаю я могу ускорять только сервер или я не правильно что-то понимаю?
сделал так, насколько результаты плачевны? мне это пока не очевидно.
$ ab -c100 -n1000 http://www.site.ru/index.php

This is ApacheBench, Version 2.3 <$Revision: 1554214 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.site.ru/index.php

Benchmarking www.site.ru (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:        nginx/1.4.7
Server Hostname:      http://www.site.ru/index.php
Server Port:            80

Document Path:          /index.php
Document Length:        0 bytes

Concurrency Level:      100
Time taken for tests:   11.437 seconds
Complete requests:      1000
Failed requests:        0
Non-2xx responses:      1000
Total transferred:      209000 bytes
HTML transferred:       0 bytes
Requests per second:    87.43 [#/sec] (mean)
Time per request:       1143.744 [ms] (mean)
Time per request:       11.437 [ms] (mean, across all concurrent requests)
Transfer rate:          17.85 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       23  449 331.0    340    2478
Processing:    84  450 335.1    352    2515
Waiting:       84  450 335.0    351    2515
Total:        219  898 579.5    738    3732

Percentage of the requests served within a certain time (ms)
  50%    738
  66%    898
  75%   1042
  80%   1387
  90%   1742
  95%   2296
  98%   2409
  99%   2439
 100%   3732 (longest request)
странно
Document Path:          /index.php
Document Length:        0 bytes
говорит что http://www.site.ru/index.php такого пути нет, /index.php лежит в корне, не могу понять какой тогда ему путь?
Арчи ~]$ ...as always want ready-made solutions that would make even tastier

Total transferred: 209000 bytes
HTML transferred: 0 bytes
И что смотрели? В смысле какой ответ?
Тесты ав довольно субъективны.
Более реальные результаты дает siege/ Но нужно имитировать реальных пользователей, с загрузкой css, javascript и т д.
palpalych
исходные данные: проприетарная cms,
ну тогда пиши в поддержку этой cms, ты им бабло не за просто так платил!
palpalych
т.е. насколько понимаю я могу ускорять только сервер или я не правильно что-то понимаю?
включить opcache и apcu, другое ускорение будет не значительно. а реально ускорить сервер можно только на железном уровне.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
как бы сказать чтобы без мата...
ab уныл чуть менее чем полностью. страницы могут кешироваться самой cms так что один адрес это очень большая глупость. нагрузку вы дали слишком большую.
Это что касается проведенного вами теста.

Вы не сделали самого главного - не измерили сколько секунд занимает формирование динамической страницы.
зачем это надо: nginx не работает с php. он работает с fastcgi. т.е. передает запросы отдельному серверу постоянно висящему в памяти. в роли сервера может быть любое приложение поддерживающее fastcgi, включая тот же самый пхп. Из-за того что, не приходится постоянно дергаться чтобы запускать пхп , система позволяет быстрее формировать страницу.
Но есть у этого процесса обратная сторона. Пока страница формируется, процесс не отвечает на любые другие поползновения. таким образом если у вас запущено 4 рабочих процесса, то больше четырех страниц за время формирования страницы система не отдаст.
Если предположить что рабочих процессов всего один, и у вас страница формируется четыре секунды, то следующий результат вы не сможете запросить раньше чем через 5-6 сек. он просто будет висеть в очереди сервера.
Да пребудет с вами знание ip адреса
nafanja
включить opcache и apcu
сделал так
yaourt -S php-apcu
/etc/php/php.ini
zend_extension=ioncube_loader.so
zend_extension=opcache.so
extension=apcu.so
что-то еще настраивать для opcache и apcu нужно?
$ php -m
PHP Warning:  Module 'ionCube Loader' already loaded in Unknown on line 0
The ionCube PHP Loader is disabled because of startup problems.
[PHP Modules]
apc
apcu
Core
ctype
curl
date
dom
ereg
fileinfo
filter
gd
gettext
hash
iconv
ionCube Loader
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
pcntl
pcre
PDO
pdo_mysql
readline
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
Zend OPcache
zlib

[Zend Modules]
Zend OPcache
the ionCube PHP Loader
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
zend_extension=ioncube_loader.so и extension=apcu.so убери из php.ini, они не тут подключаются!!! а тут /etc/php/conf.d/
apcu - это пользовательский кэш, его использование должно включаться в самой смс либо вручную либо автоматом.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
zend_extension=ioncube_loader.so и extension=apcu.so убери из php.ini, они не тут подключаются!!! а тут /etc/php/conf.d/
apcu - это пользовательский кэш, его использование должно включаться в самой смс либо вручную либо автоматом.
nafanja я тебя не понял как подключить?
/etc/php/conf.d/00-ioncube_loader.ini
zend_extension = /usr/lib/php/modules/ioncube_loader.so
/etc/php/conf.d/apcu.ini
extension=apcu.so
когда убираю из php.ini то php-fpm не стартует
$ php -m
PHP Fatal error:  [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0
что-то типа ionCube Loader должен запускаться раньше чем...я так понимаю раньше чем opcache, или?
что касаемо cms то в ней я нашел такой файлик
/system/libraries/Cache/drivers/Cache_apc.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package		CodeIgniter
 * @author		ExpressionEngine Dev Team
 * @copyright	Copyright (c) 2006 - 2012 EllisLab, Inc.
 * @license		http://codeigniter.com/user_guide/license.html
 * @link		http://codeigniter.com
 * @since		Version 2.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * CodeIgniter APC Caching Class
 *
 * @package		CodeIgniter
 * @subpackage	Libraries
 * @category	Core
 * @author		ExpressionEngine Dev Team
 * @link
 */

class CI_Cache_apc extends CI_Driver {

	/**
	 * Get
	 *
	 * Look for a value in the cache.  If it exists, return the data
	 * if not, return FALSE
	 *
	 * @param 	string
	 * @return 	mixed		value that is stored/FALSE on failure
	 */
	public function get($id)
	{
		$data = apc_fetch($id);

		return (is_array($data)) ? $data[0] : FALSE;
	}

	// ------------------------------------------------------------------------

	/**
	 * Cache Save
	 *
	 * @param 	string		Unique Key
	 * @param 	mixed		Data to store
	 * @param 	int			Length of time (in seconds) to cache the data
	 *
	 * @return 	boolean		true on success/false on failure
	 */
	public function save($id, $data, $ttl = 60)
	{
		return apc_store($id, array($data, time(), $ttl), $ttl);
	}

	// ------------------------------------------------------------------------

	/**
	 * Delete from Cache
	 *
	 * @param 	mixed		unique identifier of the item in the cache
	 * @param 	boolean		true on success/false on failure
	 */
	public function delete($id)
	{
		return apc_delete($id);
	}

	// ------------------------------------------------------------------------

	/**
	 * Clean the cache
	 *
	 * @return 	boolean		false on failure/true on success
	 */
	public function clean()
	{
		return apc_clear_cache('user');
	}

	// ------------------------------------------------------------------------

	/**
	 * Cache Info
	 *
	 * @param 	string		user/filehits
	 * @return 	mixed		array on success, false on failure
	 */
	 public function cache_info($type = NULL)
	 {
		 return apc_cache_info($type);
	 }

	// ------------------------------------------------------------------------

	/**
	 * Get Cache Metadata
	 *
	 * @param 	mixed		key to get cache metadata on
	 * @return 	mixed		array on success/false on failure
	 */
	public function get_metadata($id)
	{
		$stored = apc_fetch($id);

		if (count($stored) !== 3)
		{
			return FALSE;
		}

		list($data, $time, $ttl) = $stored;

		return array(
			'expire'	=> $time + $ttl,
			'mtime'		=> $time,
			'data'		=> $data
		);
	}

	// ------------------------------------------------------------------------

	/**
	 * is_supported()
	 *
	 * Check to see if APC is available on this system, bail if it isn't.
	 */
	public function is_supported()
	{
		if ( ! extension_loaded('apc') OR ini_get('apc.enabled') != "1")
		{
			log_message('error', 'The APC PHP extension must be loaded to use APC Cache.');
			return FALSE;
		}

		return TRUE;
	}

	// ------------------------------------------------------------------------
}
// End Class

/* End of file Cache_apc.php */
/* Location: ./system/libraries/Cache/drivers/Cache_apc.php */
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
сделал так все заработало
sudo gedit /etc/php/conf.d/05-opcache.ini
zend_extension = opcache.so
opcache.memory_consumption = 512
opcache.max_accelerated_files = 50000

; following can be commented for production server
opcache.revalidate_freq = 0
opcache.consistency_checks = 1
а эти настройки apcu
extension=apc.so
; Включаем APC
apc.enabled=1
; Количество сегментов памяти
apc.shm_segments=1
; Размер одного сегмента памяти
apc.shm_size=64 
и opcache
opcache.enable=1
включить/выключить расширение OPcache
opcache.memory_consumption=64
установка размера используемой оперативной памяти
opcache.interned_strings_buffer=8
усрановка размера используемой оперативной памяти для хранения внутренних строк (например classnames)
opcache.max_accelerated_files=4000
максимальное число закэшированных файлов
opcache.revalidate_freq=60
частота проверки файлов по времени изменения
opcache.fast_shutdown=1
включение/выключение быстрого завершения последовательности ускоренного кодаю Быстрое завершение последовательности не освобождает каждый выделенный блок, но дает Zend Engine Memory Management делать свою работу.
opcache.enable_cli=1
включение/выключение OPcache для CLI версии PHP
нужны?
тоже не понятно, чувак пишет что перешел от APC на opcache -это несовместимые технологии?
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
APC - это старое расширение для кеширования, которое теперь разделено на два расширения, opcache - который был принят в пхп для ускорения работы скриптов путем кеширования опкода, и apcu - для кеширования пользовательских данных.

что то ты на мудрил и перепутал. у тебя исходный php.ini из пакета или ты его взял из др. источников? просто opcache включается в самом php.ini он там по умолчанию выключен.

а вообще да, ioncube нужно загружать раньше оpcache. я бы просто прописал строку zend_extension = /usr/lib/php/modules/ioncube_loader.so перед zend_extension=opcache.so в php.ini, а в 00-ioncube_loader.ini за комментировал.
хотя вынос opcache в отдельный конфиг тоже нормальный вариант.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
есть nginx.conf такого вида

#user http;
worker_processes 2;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;
events {
worker_connections 2048;
}
http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;

keepalive_timeout 60;

gzip on;
gzip_comp_level 1;
gzip_types text/plain text/css text/javascript application/x-javascript application/json text/xml application/xml application/xml+rss;

##
# Virtual Host Configs
##
    include		sites-enabled/*.conf;
    # include             sites-available/*.conf;
    }

и в папке sites-available oc1561.conf такого вида (в sites-enabled ссылка создана)

server {

listen 80;
server_name oc1561;

location ~ \.php {
root /srv/http/oc1561/www;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location / {
root /srv/http/oc1561/www;
index index.html index.htm index.php home.php home.html home.htm;
}
}

достучаться до oc1561 не могу ...

в чем ошибка...

.... кажется дошло файл hosts - еще ни кто не отменял....


palpalych
в каком то топике были ссылки на твои (Ваши) файлы на github
Установка прошла успешно! 1C Предприниматель версия 7.7 работает! NGINX+PHP-FPM+MYSQL работает! Все устраивает даже уже не интересно... НО Танцуем дальше...
 
Зарегистрироваться или войдите чтобы оставить сообщение.