Linux 2.6
Как известно, по умолчанию tcp/ip в Linux 2.6 настроен на довольно высокую пропускную нагрузку.
Если предельное количество соединений для службы устанавливаться в раёне одной тысячи, а ресурсов системы более чем предостаточно поискать причину можно вот в какой месте:
Рассмотрим конкретный пример.
Служба состоит из двух частей front-end и back-end
Front часть устанавливает соединение в любом случае, но после приблизительно 1000 активных подключений соединения эти не доходят до back части.
Дело всё в том, что по tcp обещаться только front-end, а связка front-back работала на UNIX сокетах. Причём каждое подключение порождает открытие дополнительного UNIX сокета.
Кто знаком с UNIX сокетами знает, что каждый такой сокет требует создание отдельного дискриптора файла. А в linux есть явное ограничение открытых файлов для процесса. По умолчанию это 1024.
Проверить можно так:
# количество открытых Unix сокетов для демона back
$ netstat -ux -p|grep back|wc -l
# количество открытых Unix сокетов в системе
$ netstat -ux -p|wc -l
# количество открытых tpc сокетов для демона front
$ netstat -tnp|grep front|wc -l
# количество открытых tpc сокетов в системе
$ netstat -tnp|wc -l
Везде нужны права root
Снять ограничение можно здесь:
/etc/security/limits.conf
demonusername soft nofile 2048
demonusername hard nofile 2048
- demonusername - имя пользователя с правами которого запускаться демон, использующий Unix сокеты. Можно устанавливать огриначение для группы (@demonusername) или для всех (*)
- Параметры soft и hard используються для установки мягкого и жесткого лимита соответственно. soft может быть изменен в самой программе. hard может быть изменен только суперпользователем.
ВНИМАНИЕ! Необходима установка и soft и hard ограничения.
- 2048 – собственно ограничение.
Не изменяйте лимит для всей системы и не выставляйте слишком большого числа. Все эти лимиты введены не просто так. В случае взлома, атаки или просто сбоя это может привести к негативным результатам – например потере контроля за машиной.
Далее необходим ребут, чтобы преинициализировать ядро.
Ссылки на полезные статьи:
http://www.kegel.com/c10k.html
Началось всё с того, что однажды перестала обновляться лицензия програмного продукта: Parallels Virtuozzo Containers 4.0
При попытке переустановить лицензию выскочила следующая ошибка:
KA server is not available: activatefailed: Can't connect to server ka.swsoft.com:5224
Проблема скажем с обновлениями может иметь аналогичную причину.
В этом случае правильнее всего было проверить настройки DNS на хост машине.
# nslookup ka.swsoft.com
Server: 81.200.0.1
Address: 81.200.0.1#53
Non-authoritative answer:
*** Can't find ka.swsoft.com: No answer
Получаем новые DNS у провайдера (в моём случае они просто работали с ошибками – пришлось искать другие).
Обновляем /etc/resolv.conf.
Перезагружается потому, что демон лицензий висит в отдельном контейнере и изменения настроек не заметит.
Всё работает.
Information:The license has been installed successfully.
По теме:
http://www.parallels.com/products/virtuozzo/
Конфигурация.
Сервер: Серверы HP ProLiant
Контролер: Встроенный ICH9
Дисковая подсистема: 2 SATA диска в 250 Gb (RAID 1 mirror)
Операционная система: SUSE
Фактическая реализация raid на уровне ОС: DMraid
Хронология событий
Умирает второй диск.
SUSE начинает ругаться многочисленными ошибками в MFT и требует запустить fsck
Aug 23 06:12:27 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465708 in dir #2301537
Aug 23 06:12:27 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465707 in dir #2301550
Aug 23 06:12:28 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465723 in dir #2301550
Aug 23 06:12:28 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465819 in dir #2301555
Aug 23 06:12:28 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2466064 in dir #2465286
По глупости запускаеться fsck.
на выходе получаем множество жизненоважных файлов с нулевым размером.
(Напомню файлы с нулевым размером восстанавливать кране тяжко и совсем не быстро)
Результат:
1) Критически важное приложение
2) 1 мёртвый диск
3) второй диск с неработающей системой и битыми данными
Хорошё если есть рабочие бакапы.
Купить новый диск, востановились архив – два часа простоя.
Вот такая вот история.
Как нужно было делать с самог начала
Будет такая штука Adaptec RAID 2405
И 3 диска: Два в зеркало и однин в Hot spare, чтобы не пришлось бегать в магазин)
Иногда при обновлении списка пакетов, либо при добавлении нового репозитория, вылазит такая ошибка
Reading package lists... Done
W: There is no public key available for the following key IDs: 9AA38DCD55BE302B
W: GPG error: http://ftp.fr.debian.org etch Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9AA38DCD55BE302B
W: You may want to run apt-get update to correct these problems
Чтобы исправить сиё надо выполнить
gpg --keyserver subkeys.pgp.net --recv-keys 9AA38DCD55BE302B && gpg --export 9AA38DCD55BE302B | apt-key add -
Чёрточка в конце обязательна
Не так давно появилась новая версия не безызвестного дистрибутива Ubuntu 9.04, а с ним и новые проблемы.
Топик касается установки linux на все виды софтового рейда(DM-RAID/fakeRAID) и последующей загрузки с этих разделов.
Проблема точно существует для RAID, построенных на dmraid и mdadm.
(далее…)
Написал маленький скрипт для bash который считает колличество вложенных папок и файлов, иначе говоря nodes файловой файловой системы
nodes.sh
#!/bin/bash
for dir in `find $1 -maxdepth 1 -type d`;
do
printf "%-8s%s\n" $[ `find $dir \! -name "." | wc -l` - 1 ] $dir;
done
Сегодня ночью пытались установить gcc на 9ый RHL.
Чтобы процес шёл веселее решили для начала установить apt.
Раз дело происходит на Red Hat для установки был использован RPM
После установки atp попросил пофиксить зависимости.
Вот что получилось:
(далее…)