Как можно снизить потребление оперативной памяти на VPS в 2 раза, ничего не меняя в настройках программ

Оригинал статьи опубликован на habrahabr.ru Взял VPS, построенный на OpenVZ. Поставил туда Debian Lenny и всякие программы (обычный LAMP, по сути). С точки зрения потребления ресурсов ничего почти не настраивал, вышло где-то 200М занятой оперативной памяти (сразу после старта). Написал 1 ulimit -s 1024 в /etc/init.d/rc ближе к верху. Перезагрузился. Потребление памяти на VPS упало более чем вдвое, стало около 100М. Если у Вас VPS на Xen или аналогичных, то у Вас нет граблей, с которыми я тут боролся. Если на OpenVZ (Virtuozzo) со товарищи — у Вас, скорее всего, на VPS эти же грабли. В статье — почему и как это работает. OpenVZ vs Xen Отличие OpenVZ от Xen, которое нас тут интересует: в OpenVZ ограничивается виртуальная память. Т.е., например, тарифы вида «256М + 256М burstable» означают, что нам доступно макс. 256М именно виртуальной памяти (и 512М виртуальной по праздникам). Многие программы выделяют себе виртуальной памяти «про запас», т.к. при обычной работе (или виртуализации через Xen со товарищи) ее можно выделить сколько угодно (втч > доступной физически) безо всяких последствий. Это одна из причин, по котрой VPS на Xen стоят дороже аналогичных по характеристикам VPS на OpenVZ — они реально предоставляют больше ресурсов. Но это еще не все На каждый запущенный тред в виртуальной памяти выделяется место под стек. Так вот, в debian lenny, например, по умолчанию это место = 10М. Берем какой-нибудь apache с mpm_worker (который создает кучу тредов), запускаем под OpenVZ — тратятся сотни мегабайт памяти. ...

18 травня 2014 · 4 хвилин · 785 слів · dimetrius

Чеклист по оптимизации VPS на PHP/Mysql/Nginx

Как обеспечить более высокую производительность VPS сервера, который работает на Nginx + PHP + Mysql? В этой статье приведен чеклист основных настроек, которые позволят существенно оптимизировать работу сервера. Настройка займет не более 10 минут и не требует ничего, кроме редактирования конфигурационных файлов. Примеры настроек приведены для операционной системы Debian 7 и VPS сервера с 1 процессором и 512Мб оперативной памяти. Nginx Настройки выполняются в файле /etc/nginx/nginx.conf, а также в настройках виртуального хоста (обычно в папке /etc/nginx/sites-enabled) Количество воркеров Количество воркеров nginx’a должно совпадать с количеством ядер: 1 worker_processes 1; Cache-Control заголовки Установка заголовков Cache-Control позволит существенно разгрузить Ваш сервер от повторных обращений к файлам которые не изменяются (или изменяются редко, например css/js/jpg/png/gif): 1 2 3 location ~* \.(css|js|png|gif|jpg)$ { expires max; } Access log Лишние дисковые операции из-за записи логов нам не нужны, отключаем: 1 access_log off; Unix socket’ы Включаем unix-сокеты для работы с PHP: 1 2 3 4 5 6 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; # также необходимо настроить php-fpm, см. ниже fastcgi_index index.php; include fastcgi_params; } PHP Настройки выполняются в файле конфигурации fpm php-fpm.conf, который в нашем случае находится тут /etc/php5/fpm/pool.d/www.conf. Unix socket’ы Убеждаемся, что php-fpm работает с unix-сокетами, а не с tcp: ...

18 травня 2014 · 3 хвилин · 500 слів · dimetrius

Пропал холостой ход на Daewoo Sens

Предисловие На улице 26 декабря 2013, температура утром -23 градуса. Имеем Daewoo Sens 2005, Микас 7.6 Пару дней назад вышел, завёл машинку с первого раза, собрался ехать, нажал на газ кратковременно и бросил, тут же машинка заглохла. Я снова её завёл и понял что холостых нет совсем, бросаю педаль и машина сразу глохнет. В тот день обязательно и срочно нужно было ехать, поэтому так и поехал, не бросая полностью педаль газа… По приезду на место, заглушил, открыл крышку воздушного фильтра, завёл… не помогло, машинка снова заглохла. Снял фильтр, очистил от накопившейся пыли, одел крышку и снова завёл. В этот раз всё хорошо завелось, заработало… больше в этот день проблем небыло. На следующий день, уже ближе к вечеру… Подъезжаю к перекрёстку, останавливаюсь, вижу загоревшийся Check, а следом за ним аккумулятор и масло… снова заглохли. Завёлся, подгазовывая доехал до места назначения. Потом так же домой… Вечер провёл в интернете всё сводилось к умершему РХХ (регулятору холостого хода). На следующее утро (воскресенье) отправляюсь на авторынок за РХХ с братом на шестёрочке, приехали рано, продаванов совсем небыло. Подождали минут 40 и вот начали появляться люди с товаром. А на улице мороз -23. Купил РХХ за 120 грн, как сказали московский, с жёлтой наклейкой, металлическим наконечником и надписью 2112 и что-то там ещё… Установил новый РХХ несколько раз включил зажигание до отключения бензонасоса, потом выключил до щёлчка релюшки под капотом, на четвёртый раз завёл с первого раза. На удивление обороты держатся стабильными, дождался пока прогреется больше обычного, поехал прокатился, вернулся домой. Всё в норме, Check кстати потух при первом же включении зажигания с новым РХХ. А ещё, кажется, после прогазовки обороты не так сильно проседают, не успевают, что ли…

26 квітня 2014 · 2 хвилин · 274 слів · dimetrius

Очистка материалов в корзине Joomla

Так уж сложилось что на одном из моих сайтов очень много новостей приходят автоматически с помощью RSS грабера. Позже эти новости публикуются, удаляются… в общем обычная работа перед публикацией. Вышло так что таблица content стала весить более 50 Мбайт, это более 7000 материалов. Реально же опубликовано куда меньше, остальное всё тупо в базе лежит и почему-то меня напрягает… Захотелось удалить это счастье под названием “Корзина”. Но через стандартный интерфейс удалять столько материалов просто не реально нудно. Выручил phpmyadmin… Зашёл в таблицу content, нашёл материалы со state = -2 и давай их удалять ))) Пара минут и я счастливый обладатель почти пустой БД, которая весит уже чуть более 12 Мбайт, вместо 50 Мбайт! Все работы проводились на Joomla 2.5.14, если повторяете, то делаете это на свой страх и риск! phpmyadmin

30 вересня 2013 · 1 хвилина · 129 слів · dimetrius

Переключение шаблона Joomla на основе домена

Многие сайты в наше время используют поддомены для того чтоб отдавать контент для мобильных устройств. Я лично предпочитаю чтоб клиент сам выбирал какой версией сайта пользоваться, стандартной, или мобильной, чтоб это было как опция, а не неким волшебством, от которого потом невозможно избавиться. Joomla имеет несколько тяжёлых плагинов и компонентов, которые делают переключения шаблона (и многое другое), а также несколько коммерческих решений, чтоб справиться с задачей переключения шаблонов. Наше решение довольно простое, но придётся редактировать код основных файлов Joomla. Это всего пару строк кода… Откройте ./includes/application.php и вставьте следующий код в строке 474 (для Joomla 1.7.3 - для других версий, вставить непосредственно перед строкой ‘// Fallback template’): 1 2 3 4 // Проверка мобильного шаблона if ($_SERVER['HTTP_HOST']=="ЗДЕСЬ_МОБИЛЬНЫЙ_ДОМЕН") { $template->template = 'ЗДЕСЬ_НАЗВАНИЕ_МОБИЛЬНОГО_ШАБЛОНА'; } После этих действий Joomla будет отображать мобильный шаблон, когда посетитель будет заходить на сайт с домена для мобильных. Используемые материалы: Switching Joomla template based on domain Скачать plg_juvirtualdomain_v3.2.1.zip

18 липня 2013 · 1 хвилина · 150 слів · dimetrius

Открытие категории Автомобили, или Авто

Наконец то дошли руки добавить категорию о автомобилях. Согласен что тематика блога совсем о ином, но мне хочется как-то запоминать некоторые моменты, а лучше собственного блога для этого ничего не нашёл. ) Так что если интересна тематика, то читаем RSS, заходим иногда на сайт ) На данный момент у меня Daewoo Sens 2005 года, поэтому речь именно о нём. В основном…

5 травня 2013 · 1 хвилина · 61 слово · dimetrius

Liquidsoap в роли перекодировщика потока

Начали мы внедрять в жизнь интереснейшее интернет радио “Fresh Rock”. Арендовали слабенький VPS в Киеве с жирным каналом в UA-IX. Слабенький потому что думалось на нём ставить только один Icecast, оказалось немного не так :) На данный момент на этом сервере кроме Icecast крутится и Liquidsoap, который перекодирует основной поток MP3 формата в OGG и AAC+ потоки. OGG в основном используется для воспроизведения потока браузерами на HTML5, AAC+ используется в основном для прослушивания на мобильных телефонах, андроидофонах и т.д. Вообще люблю RedHat based дистрибутивы, но поскольку сам собрать liquidsoap на них не в силах, а в репозиториях он есть только для Debian, Ubuntu, то решено было устанавливать именно Debian. Пришлось подключить тестовые репозитарии чтоб получилось установить версию liquidsoap, которая в силах перекодировать поток в AAC+. Как это делалось уже не опишу, много чего пробовал, кое как поставил :) Ниже привожу конфиг liquidsoap с помощью которого мы перекодируем из одного формата в другой. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #!/usr/bin/liquidsoap # Log dir set("log.file.path","/var/log/liquidsoap/basic.log") set("log.stdout",true) set("log.level",4) # Input HTTP url=mksafe(input.http("http://ua.freshrock.net:8000/mp3")) #AAC+ output.icecast(%aacplus(channels=2, samplerate=44100, bitrate=64), icy_metadata="true", mount = "aac", host = "localhost", port = 8000, password = "hackme", genre="Rock", description="Fresh Rock, Lugansk Rock, Ukrainian Rock", name="Fresh Rock", url="http://freshrock.net", url) #MP3 #output.icecast(%mp3(bitrate=128, id3v2 = true), # mount = "mp3128", # host = "localhost", port = 8000, password = "hackme", # genre="Rock", # name="Test 128kb\s", # url="http://freshrock.net", #url) #OGG output.icecast(%vorbis (channels=2, samplerate=44100, quality=0.4), icy_metadata="false", mount = "ogg", host = "localhost", port = 8000, password = "hackme", genre = "Rock", description = "Fresh Rock, Lugansk Rock, Ukrainian Rock", name = "Fresh Rock", url = "http://freshrock.net", drop_metadata(url)) Заметьте, активно только два потока. Не знаю почему, но на моём сервере если активировать третий поток, то процессор начинает очень активно использоваться и Icecast начинает “икать”. Может действительно очень слабый, а может какой-то глюк. На OGG потоке обрезаются тэги, делается это для того, чтоб браузеры не переподключались при смене тэга на OGG потоке. Кому интересно, могут почитать об этом глюке в интернете. Каким то странным образом иногда начали обрезаться тэги и на AAC+ потоке, причём далеко не на всех песнях. Какой-то зависимости я увидеть не смог. ...

10 січня 2013 · 2 хвилин · 405 слів · dimetrius

CentOS 5: контрольная панель Eaccelerator

This is a continuation of Eaccelerator Installation topic here. To install eAccelerator control panel, copy control.php to your main html folder. We’ll use /var/www/html and http://server.domain.com in our example. Through SSH Change directory. 1 cd /tmp/eaccelerator-0.9.5.2 Copy control.php to your main html folder. 1 cp control.php /var/www/html Edit control.php. Change $user and $pw to your desired username and password. 1 2 $user = "admin"; $pw = "eAccelerator"; Edit the file /etc/php.d/eaccelerator.ini vi /etc/php.d/eaccelerator.ini Add 1 eaccelerator.allowed_admin_path="/var/www/html/control.php" Save and exit. Restart Apache. 1 /etc/init.d/httpd restart View your eAccelerator control panel at http://server.domain.com/control.php

21 травня 2012 · 1 хвилина · 91 слово · dimetrius

Как очистить SWAP в Linux

Надоело мне каждый раз, после того как кто-то использует много ОЗУ, перезагружаться чтоб очистить SWAP. Ведь если его не очистить то машинка мягко говоря начинает тормозить. А если это ещё и сервер с несколькими сайтами, а то и с несколькими десятками, то после перезагрузки приходится ещё и все их перепроверить на работоспособность, не побилась ли где mysql база. Хотя и с mysql есть лекарство, но о нём мы поговорим позже. В этот раз меня сделала счастливым всего одна команда, введённая от суперпользователя… 1 2 3 4 5 # Выключаем swap swapoff -a # Включаем swap swapon -a этим мы отключаем использование swap. А через минуту-пару минут, после того как наш swap перенесётся снова в ОЗУ, вводим swapon -a, этим мы снова подключаем использование swap. Полностью отключать и не включать swap я не рекомендую, хотя бывают разные конфигурации железа, возможно где-то это будет оправданно.

30 квітня 2012 · 1 хвилина · 143 слів · dimetrius

Очистка очереди deferred в Postfix

postsuper -d ALL deferred Кстати, вот ещё небольшое уточнение по поводу отличия папок defer от deferred: /var/spool/postfix/defer – тут хидеры /var/spool/postfix/deferred – а тут тушки писем Источник

30 квітня 2012 · 1 хвилина · 27 слів · dimetrius