Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Trotor

Настройки апача и мускула

Рекомендованные сообщения

Для vds большое значения имеют настройки сервера. Некоторое время "игрался" с ними, вот такой вид имеют они сейчас.

apache2.conf

 

ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}

Timeout 1
KeepAlive Off
MaxKeepAliveRequests 300
KeepAliveTimeout 3

<IfModule mpm_prefork_module>
StartServers       20
MinSpareServers    5
MaxSpareServers    10
MaxClients        20
   MaxRequestsPerChild   3000
</IfModule>
<IfModule mpm_worker_module>
StartServers       1
MaxClients        50
MinSpareThreads    1
MaxSpareThreads    4
   ThreadsPerChild      25
   MaxRequestsPerChild   10000
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
   Order allow,deny
   Deny from all
</Files>
DefaultType text/plain
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel error
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ServerTokens Prod
ServerSignature Off
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

 

 

my.conf (мускул)

 

[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock
default-character-set= utf8

[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /mysql_tmp
language	= /usr/share/mysql/english
wait_timeout           = 90
key_buffer		= 256M
max_allowed_packet	= 16M
thread_stack		= 256K
thread_cache_size	= 8
max_connections        = 400
table_cache            = 512
thread_concurrency     = 8
query_cache_limit       = 20M
query_cache_size        = 64M
log_slow_queries	= /var/log/mysql/mysql-slow.log
long_query_time = 2
server-id		= 1

innodb_buffer_pool_size	= 64M
innodb_additional_mem_pool_size = 2M

innodb_data_file_path = system:16M
innodb_data_home_dir  = /var/lib/mysql

#innodb_log_arch_dir   =
innodb_flush_log_at_trx_commit = 0
innodb_log_file_size  = 8M
innodb_lock_wait_timeout = 10
innodb_file_per_table = 1
#innodb_log_group_home_dir =
innodb_thread_concurrency = 8

[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

[mysql]
#no-auto-rehash	# faster start of mysql but no tab completition
#default-character-set= koi8r
default-character-set= utf8

[isamchk]
key_buffer		= 128M
!includedir /etc/mysql/conf.d/

 

 

Памяти на сервере полтора гига, проца чуть больше двух герц. Посещаемость около 3 тысячи хостов в сутки.

 

Нет ли критических ошибок в этих настройках для ipb?

Поделиться сообщением


Ссылка на сообщение
Нет ли критических ошибок в этих настройках для ipb?

Отсутствие nginx на фронтэнде.

Поделиться сообщением


Ссылка на сообщение
07/12/12 07:36 (изменено)

Отсутствие nginx на фронтэнде.

Отсутствие nginx на фронтэнде.

В смысле в настройках апача?

 

Вот сам нгинкс:

 

 

# # $Id: nginx.conf,v 1.1 2009-06-04 10:13:16 root Exp $ #  user www-data; worker_processes  4;  error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid;  events {     worker_connections  10240; }  http {      client_max_body_size 2m;     include       /etc/nginx/mime.types;     default_type  application/octet-stream;      access_log	/var/log/nginx/access.log;      sendfile        on;     #tcp_nopush     on;      #keepalive_timeout  0;     keepalive_timeout  0;     tcp_nodelay        on;      gzip  off;      include /etc/nginx/sites-enabled/*;  }

 

Изменено пользователем Haktar

Поделиться сообщением


Ссылка на сообщение

Т.е. nginx таки есть? Статику на него перенаправили? Ну и ок, конфиги у вас самые обычные, переживать не о чем. Или какие-то проблемы есть с сервером?

 

MaxClients        50

Какой memory_limit стоит для PHP?

 

Если дефолтные для последних версий 128Мб, то (128+20)*50 = 7400Мб >> 1500Мб.

 

Для штатной работы не критично, но если начнут ддосить - apache сожрет всю память и положит сервер. В целях повышения устойчивости сервера имеет смысл понизить MaxClients до 10, а то и 8. На скорости работы это никак не отразится, у вас в штатном режиме и так наверняка не больше 10 инстансов висит.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Статику на него перенаправили?

Непонял.

 

 

Ну и ок, конфиги у вас самые обычные, переживать не о чем.

Кое где я всё таки сделал изменения.

 

 

Или какие-то проблемы есть с сервером?

С апачем. Но в связке с мускулом.

 

 

Какой memory_limit стоит для PHP?

256M

 

Если дефолтные для последних версий 128Мб, то (128+20)*50 = 7400Мб >> 1500Мб.

Тоесть увеличить до 1500М?

 

Для штатной работы не критично, но если начнут ддосить - apache сожрет всю память и положит сервер. В целях повышения устойчивости сервера имеет смысл понизить MaxClients до 10, а то и 8. На скорости работы это никак не отразится, у вас в штатном режиме и так наверняка не больше 10 инстансов висит.

Тоесть уменьшение не уменьшит быстродействие?

Поделиться сообщением


Ссылка на сообщение

Аррр. Как вы сделали такие странные выводы? :)

 

Непонял.

nginx в связке с apache обычно используется для отдачи статических файлов. Например, правило вида:

 

  location ~* \.(jpg|png|gif)$ {
     root /var/www/path.to.forum/;
 }

 

приведет к тому, что все картинки будут отдаваться самим nginx, без задействования apache, что заметно разгружает сервер.

 

256M

Многовато, для IPB гарантированно достаточно 128Мб.

 

Тоесть увеличить до 1500М?

Ни в коем случае. Наоборот, следует уменьшить в конфиге apache значение MaxClients до 8. Возможно, потребуется аналогично уменьшить значение ThreadsPerChild.

 

Тоесть уменьшение не уменьшит быстродействие?

Это не ускорит и не замедлит сервер, но в случае большой нагрузки сервер не умрет напрочь и не потеряет управление, а начнет отказывать клиентам в соединении.

 

С апачем. Но в связке с мускулом.

Индексы в базе все в порядке? Увы, ваша версия еще страдает серьезными проблемами в скорости. К 3.3 многие тяжелые места в IPB оптимизировали, но вы, я так понимаю, не планируете более обновляться.

Поделиться сообщением


Ссылка на сообщение
07/12/12 23:49 (изменено)

Аррр. Как вы сделали такие странные выводы?

Методом проб и ошибок. Я не хотел, но пришлось заняться сервером, а знаний никаких. Поэтому приходиться вот такими методами :)

 

 

Ни в коем случае. Наоборот, следует уменьшить в конфиге apache значение MaxClients до 8. Возможно, потребуется аналогично уменьшить значение ThreadsPerChild.

Многовато, для IPB гарантированно достаточно 128Мб.

Изменил. Тестирую.

 

 

Это не ускорит и не замедлит сервер, но в случае большой нагрузки сервер не умрет напрочь и не потеряет управление, а начнет отказывать клиентам в соединении.

Нагрузил форум - вы правы, так и есть. Но всё равно ещё присматриваюсь к поведению сервера.

 

 

Индексы в базе все в порядке?

В том то и дело что нет. Но пока маловато опыта чтоб исправить индексы таблиц.

 

 

К 3.3 многие тяжелые места в IPB оптимизировали, но вы, я так понимаю, не планируете более обновляться.

Это сколько прийдёться переделывать. Вот что меня останавливает.

 

nginx в связке с apache обычно используется для отдачи статических файлов. Например, правило вида:

Я так понял это прописать в nginx?

 

Прописал вот такое:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|avi|swf)$ {

root /var/www/;

}

Незнаю, сработало ли :)

Изменено пользователем Haktar

Поделиться сообщением


Ссылка на сообщение
Незнаю, сработало ли

 

Проверить легко:

 

http://imtw.ru/grafik/logo.gif - картинка

http://imtw.ru/grafik/blablabla.gif - 404 от nginx

 

Значит, работает. Apache должно заметно полегчать.

 

Еще у вас в коде страницы висит:

   [HTTP_X_FORWARDED_FOR] => ***
   [HTTP_CONNECTION] => close
   [HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1
   [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
   [HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
   [HTTP_ACCEPT_ENCODING] => gzip, deflate
   [HTTP_DNT] => 1
...

 

Видимо, отлаживали чего-то, и забыли. Спрячьте.

Поделиться сообщением


Ссылка на сообщение

Apache должно заметно полегчать.

Заметно, да. И сбоев нет.

 

Видимо, отлаживали чего-то, и забыли. Спрячьте.

Это рекламный код от рекламодателя. На него и оплачивается хостинг. А чё он опасен?

Поделиться сообщением


Ссылка на сообщение

[HTTP_X_FORWARDED_FOR] => ***
   [HTTP_CONNECTION] => close
   [HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1
   [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

- это не рекламный код. Это банальный print_r($_SERVER); обычно нужный для отладки. Одна из классических уязвимостей вида "раскрытие данных", дающее хакеру возможность подсмотреть за внутренностями вашего сервера. Вряд ли ваш рекламодатель промышленно устанавливает всем такое. Скорее всего, у вас установлен какой-то ручной говнокод, который желательно поправить чем скорее, тем лучше.

Поделиться сообщением


Ссылка на сообщение

- это не рекламный код. Это банальный print_r($_SERVER); обычно нужный для отладки. Одна из классических уязвимостей вида "раскрытие данных", дающее хакеру возможность подсмотреть за внутренностями вашего сервера. Вряд ли ваш рекламодатель промышленно устанавливает всем такое. Скорее всего, у вас установлен какой-то ручной говнокод, который желательно поправить чем скорее, тем лучше.

Интересно однако.

 

Вот сам код:

<?php
$timeout = ini_get('default_socket_timeout');
ini_set('default_socket_timeout', 3);
echo     @file_get_contents("http://links.radiushosting.ru/get_links.php?url=".urlencode($_SERVER['REQUEST_URI'])."&host=imtw.ru&charset=utf-8");
ini_set('default_socket_timeout', $timeout);
echo "<!--"; print_r($_SERVER); echo "-->";
?>

 

Удалил <!--"; print_r($_SERVER); echo "-->, реклама осталась, но отладки в коде нет.

 

Что посоветуете?

Поделиться сообщением


Ссылка на сообщение
Вот сам код:

Да, код совсем примитивный. Даже кеширования нет.

 

Чуть быстрее и безопаснее будет сделать так:

<?php
       $classToLoad = IPSLib::loadLibrary(IPS_KERNEL_PATH . '/classFileManagement.php', 'classFileManagement');
       $classFileManagement = new $classToLoad();
       $classFileManagement->timeout = 3;
       echo $classFileManagement->getFileContents('http://links.radiushosting.ru/get_links.php?url='.urlencode($_SERVER['REQUEST_URI']).'&host=imtw.ru&charset=utf-8');
?>

 

А совсем хорошо было бы вынести этот запрос в отдельный файл, и подключать его через iframe или JS.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Чуть быстрее и безопаснее будет сделать так:

Спасибо, поставил. Надеюсь рекламодатель не будет возмущаться :)

Поделиться сообщением


Ссылка на сообщение

Для настройки mySQL рекомендую воспользоваться скриптом tuning-primer.sh. И посмотрел что то многовато мне кажется висит процессов appache у вас "StartServers 20" плюс еще сколько ngnix запустил непонятно.

 

плюс таблицу "sessions" можно перевести в память, если конечно её хватает.

Поделиться сообщением


Ссылка на сообщение

nginx в связке с apache обычно используется для отдачи статических файлов. Например, правило вида:

  location ~* \.(jpg|png|gif)$ {
     root /var/www/path.to.forum/;
 }

приведет к тому, что все картинки будут отдаваться самим nginx, без задействования apache, что заметно разгружает сервер.

А не подскажете, что эффективнее будет - nginx location или правило в mod rewrite?

RewriteCond %{REQUEST_FILENAME} .*\.(jpeg|jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /public/404.php [L]

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...