Заметки

Материал из Linux Wiki
Версия от 08:50, 23 июля 2012; Rain (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску
  • Для корректной работы 3D (например, для работы драйвера radeon) в системе должен быть установлен пакет libgl1-mesa-dri, он предоставляет библиотеки, подгружаемые иксами, благодаря которым работает 3D.
  • Обновление альтернатив в Debian - update-alternatives --config что_обновлять
  • Сливание двух каталогов в консоли (так, как это делается в графике) в случае, если подкаталоги имеют одинаковое название - rsync -av --remove-source-files откуда/ куда/. Недостаток - файлы копируются, после чего удаляются, что 1 - долго; 2 - может не сработать, если есть всего пара крупных файлов, а места нет.
  • Установка темы для GTK-приложения в консоли: GTK2_RC_FILES=/path/to/your/theme/gtkrc application-command. Подробнее...
  • Таблица VGA-видеорежимов для Linux-ядра
-----------------------------------------------------------------
                        VGA settings
-----------------------------------------------------------------
                640x480    800x600    1024x768       1280x1024
256 colors        768        771         773            775
32K colors        784        787         790            793
64K colors        785        788         791            794
16M colors        786        789         792            795
--------------------------------------------------------------
  • phpBB2: для того, чтобы сделать произвольного пользователя администратором, надо выполнить следующий запрос:
update phpbb_users set user_level = '1' where username = 'Rain';
  • Создание загрузочного диска Windows: mkisofs -iso-level 3 -N -b boot.bin -no-emul-boot -JR -o file.iso content/
  • Замер скоростных характеристик винчестера через hdparm:
    • Чтение из оперативной памяти (чтение уже кэшированных файлов):
root@mws64:~# hdparm -T /dev/sda 
/dev/sda: Timing cached reads: 2664 MB in 2.00 seconds = 1332.99 MB/sec
    • Чтение из кэша винчестера. Иначе говоря, скорость работы с кэшем, и, как следствие - максимально возможная теоретическая скорость записи на диск (так как данные обычно попадают сначала в кэш, а уже потом сливаются на диск):
root@mws64:~# hdparm --direct -T /dev/sda
/dev/sda: Timing O_DIRECT cached reads: 490 MB in 2.00 seconds = 244.44 MB/sec
    • Чтение напрямую с диска - максимальная скорость чтения некэшированных блоков данных:
root@mws64:~# hdparm --direct -t /dev/sda
/dev/sda: Timing O_DIRECT disk reads: 232 MB in 3.02 seconds = 76.76 MB/sec
    • Максимальную скорость записи можно проверить, записав большой объем данных на диск и синхронизировав состояние кэша с диском.
  • Для воспроизведения видео в mplayer, захваченного с некоторых сетевых видеокамер (в частности, D-Link DCS-900, формат mjpeg) при помощи wget, необходимо установить пакет ffmpeg (вероятно, требуется библиотека libavdevice, которую он тянет по зависимостям).
  • Переменная для указания пути подгрузки динамических библиотек - LD_LIBRARY_PATH
  • http://www.linux.org.ru/view-message.jsp?msgid=3968366 - обсуждение WD Caviar Green Power.
  • http://www.linux.org.ru/view-message.jsp?msgid=3968756 - обсуждение alsa, форматов, тестовая дорожка для настройки карт.
  • Включение перенаправления логгируемых сообщений в rsyslogd:
On the client you want to log from:
vi /etc/rsyslog.conf
…
*.* @RemoteSyslogIPAddress:Port
…

Example:
*.* @172.18.1.50:514

On the remote logging server:
vi /etc/rsyslog.conf
…
# Begin – Allow remote logging
$ModLoad imudp.so
$UDPServerRun 514
# End – Allow remote logging
wget http://someip:8080/tools_admin.php --post-data="ACTION_POST=LOGIN&LOGIN_USER=a&LOGIN_PASSWD=b&login=+Log+In+&NO_NEED_AUTH=1&AUTH_GROUP=0&admin_name=admin&admin_password1=temp123"
  • Использование sendxmpp вместе с аккаунтами Google (или хостами с сервером на отдельном домене через SRV) - тред, пример, работавший с xmpp:jabberworld.info:
echo 123 | /usr/bin/sendxmpp -o jabberworld.info jabberworld.info rain

где -o jabberworld.info - домен JID'a, jabberworld.info - домен целевого юзера, rain - имя целевого юзера. В .sendxmpprc: имя@SRV-домен пароль. Можно перенести -o jabberworld.info (в мане упоминается как component) в конфиг, тогда jabberworld.info ставится после пароля.

  • Если в fail2ban требуется указать 2 одинаковых jail'a, но с разными параметрами - например, нужно банить кого-то с меньшим временем - то jail с более мягкими ограничениями следует описывать первым, а в jail'e с более жесткими ограничениями добавить поле "ignoreip = адрес1 адрес2 сеть/11"
  • inotify:
/proc/sys/filesystem/inotify/max_queued_events is the maximum number of events that can be queued at once.
If the queue reaches this size, new events are dropped, but the IN_Q_OVERFLOW event is always sent.
With a significantly large queue, overflows are rare even if watching many objects.
The default value is 16,384 events per queue.

/proc/sys/filesystem/inotify/max_user_instances is the maximum number of inotify instances that a given user can instantiate.
The default value is 128 instances, per user.

/proc/sys/filesystem/inotify/max_user_watches is the maximum number of watches per instance.
The default value is 8,192 watches, per instance. 
  • Degraded raid
Boot from Degraded Disk

If the default HDD fails then RAID will ask you to boot from degraded disk.
If your server is located in a remote area, the best practice may be to configure this to occur automatically.
Since Ubuntu 8.10 there is a new feature to boot automatically if default RAID disk fail. Simply:

   1. edit /etc/initramfs-tools/conf.d/mdadm
   2. change "BOOT_DEGRADED=false" to "BOOT_DEGRADED=true" 

NB:

    * Additionally, this can be specified on the kernel boot line with the bootdegraded=[true|false]
    * You also can use #dpkg-reconfigure mdadm rather than CLI! 

Расчет параметров worker-модуля Apache

StartServers
задает лишь начальное число процессов, запускаемых при старте сервера. Может быть любым небольшим, но есть смысл поставить его, исходя из типичной нагрузки на сервер - если, например, обычно активно работают 10 процессов (не потоков), то есть смысл ориентироваться на это значение
ServerLimit
максимальное число процессов Апача, которое может быть запущено.
ThreadsPerChild
Каждый процесс порождает указанное число тредов, которые и обрабатывают запросы.
MaxClients
максимальное число одновременных запросов
MaxRequestsPerChild
максимальное число запросов на процесс (тред?), после чего тот перезапускается
ThreadLimit
Во время graceful-рестарта сервера число тредов на процесс может увеличиваться до этого значения (как я понимаю, для того, чтобы была минимальная просадка производительности, пока перезапускается соседнее дерево тредов)
MinSpareThreads
сервером будет поддерживаться минимум указанное тут число тредов "на подхвате"
MaxSpareThreads
если число свободных тредов будет превышать указанное - лишние будут уничтожаться

Расчеты

  • MaxClients = ServerLimit * ThreadsPerChild
  • ThreadLimit = 2 * ThreadsPerChild
  • ThreadsPerChild - обычно на уровне 20-30
  • ServerLimit - на пару с ThreadsPerChild высчитываем, исходя из максимального числа необходимых одновременно обрабатываемых запросов.
  • MinSpareThreads - ставим немного ниже, чем ThreadsPerChild, для того, чтобы при поступлении запросов заранее порождался резервный процесс со своим деревом тредов. Логика: когда запросов нет - имеем, например, 32 треда и 30 minspare - новые процессы и треды не порождаются. Пришло несколько запросов (например, 5, т.е., 1/6 от числа потоков на процесс - порождаем новый, чтобы когда придет еще больше запросов - уже были готовые треды. В зависимости от нагрузки на сервер регулируем соотношение). Стоит помнить, что при недостатке даже одного треда порождается сразу ThreadsPerChild тредов, так как порождается новый процесс сервера
  • MaxSpareThreads - логика примерно такая же, как в случае MinSpareThreads, но в обратную сторону: пока запросы приходят и обрабатываются (например, лимит ThreadsPerChild = 32. а MaxSpareThreads = 35, а обрабатываются сейчас 5 запросов) - держим резервный процесс. Когда запросы рассосались - гасим лишний процесс. В зависимости от нагрузки и интенсивности запросов, оставляем больше или меньше процессов с их тредами "на подхвате".