Как я выжил на маленьком vds.
Собственно тема не нова — vds, самый дешёвый из всех что был найден.
Как следствие минимум ресурсов, зато неплохии такие амбиции.
Итак, достался мне виртуальный сервер с 64 Мб памяти, быстродействием в 300 Мгц, и диском около 1 Гб.
Операционную систему хостер предоставляет на выбор, и переустановка сервера, в случае чего, занимает считанные минуты.
Ленивое желание, чтобы всем занимался инсталлятор debian’a повлияло на выбор.
Изначально планировалось разместить на площадке закрытую конференцию для группы энтузиастов в 10 человек.
Затем у отдельных индивидов появилось жгучее желание наклепать персональных страниц, но проблемы начались немедля.
Из lenny-ветки дебиана были поставлены apache2.2, mysql 5.1, php5 и необходимые модули для апача.
Всё установилось и заработало.Только был залит контент сайта, и не успели пройти первые восторги, как выяснилось, что при одновременном захождении 5 человек (я уже не говорю о большем), mysql падал и восторг прекращался.
Банально, не тюнингованный апач сжирал всю память, и mysqld после печального «Out of memory» больше не поднимался.
Первым бесплатным решением было увеличить своп, но выяснилось что на этом vds свопа вообще нет. Более того, его нельзя было создать никаким образом, и функции типа swapon не поддерживались. Понятно, хостеру тоже надо кушать.
Пытка хостера наивно-непосредсвенными вопросами привела к следующим выводам:
- на линкусе swap никак не разрешён;
- на freebsd swap обязательно имеется.
При чём в размере оперативной памяти. Ого-го, подумалось группе халявщиков. Немедленно переезжаем на FreeBSD!
Собственно переезд оказался быстр, но последствия не утешительны.
Mysqld так же падал.
А swap… Swap в FreeBSD такая вещь, без которой он (bsd), категорически не функционирует. (Между прочим, грамотные люди (см. ниже) подсказывают, что это совсем не так!) Т.е. присутсвует номинально он обязательно. Но в top’е (на vds) показывает примерно следующее:
Swap: 192M Total, 1572K Used, 190M Free
Грубо говоря, swap не оправдал возложенные на него надежды.
Пришлось таки, почесать затылок и заняться оптимизацией.
Перво-наперво был отыскан в дебрях /usr/local/share/mysql конфиг my-small.cnf для «систем с малым количеством памяти (<= 64M)». Практически без изменений содержимое оказалось в /etc/my.cnf, от себя добавил только:
default-character-set=cp1251
character-set-server=cp1251
skip-character-set-client-handshake
все бэкапы в cp1251, что ж теперь. Не помешало бы skip-innodb, но это в будущем.
Так же, после внимательного изучения вопроса тюнинга тредов, кэш (thread_cache_size) был выставлен на цифру 8. Эффект получился весьма удовлетворительный:
mysqladmin extended-status -p | grep hread
Enter password:
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 4 |
| Threads_connected | 1 |
| Threads_created | 5 |
| Threads_running | 1 |
Размер резидентной памяти для процесса mysqld сейчас колеблется около 10-13 Мб.
Продолжение завтра..
Глубоко извиняюсь за задержку, публиковался на хабре. Продолжение тут.
dan1005
(c) compiling.ru
Popularity: 3%
Этот материал находится на сайте http://compiling.ru
Опечатка sawpon заменить на swapon
Thanks so much.
Поправил.
«А swap… Swap в FreeBSD такая вещь, без которой он (bsd), категорически не функционирует. »
Автор операционные системы не путает? Как это без него не функционирует?
…кэш (thread_cache_size) был выставлен на 8 Мб…
надеюсь это опечатка и вы не собираетесь держать в кэше 8 миллионов тридов :)
«Swap в FreeBSD такая вещь, без которой он (bsd), категорически не функционирует. Т.е. присутсвует номинально он обязательно.»
Это не так. FreeBSD отлично работает и без свопа. Иначе не было pfSense, m0n0wall, bsdrp, FreeNAS, frenzy и других «прошивочных» продуктов.
> надеюсь это опечатка и вы не собираетесь держать в кэше 8 миллионов тридов :)
Не, не 8 млн, а просто 8 :-) конечно :-)
to Dan, Jay,
братцы, простите грешного, во фряхе я ламер. Первый раз только на хостинге и поковырялся.
Глубочайшие благодарности за содержательные комментарии!
;-)
Мне понравилось описания, только меня мучает вопрос, что я не так делаю. потому как у меня получается что на vps всё под завязку забито, памяти 200 метров. стоит mysql apache java настройки сделал все как на сайте проблема с памятью не ушла.
А кто память жрёт, mysql, apache?