Техническая база знаний

Заказать консультацию


Материал от эксперта

Оптимизация работы

Проверка текущего таймера:

cat /sys/devices/system/clocksource/clocksource0/current_clocksource 

Отобразить список имеющихся таймеров: 

cat /sys/devices/system/clocksource/clocksource0/available_clocksource

Прописать таймер в параметрах ядра: 

cat /boot/grub/menu.lst | grep hpet
kernel /vmlinuz-2.6.32-504.23.4.el6.x86_64 ro root=UUID=ffa77d61-73c6-4357-a8a6-fd371ae4427f rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet clocksource=hpet

Включить в /etc/asterisk/asterisk.conf

internaltiming=yes

Вынесение директорий в память

Актуально для Автообзвона. /wiki/spaces/FKB/pages/1297383429.

Оптимизация MySQL

Информация в Базе знаний FIBEX

Теория 

Таймер TIMER в ядре отвечает за выдачу IRQ. Его частота должна быть 1ГГц. 

CONFIG_HZ_1000=y
CONFIG_HZ=1000

Практика 

Документация 

Теория 

Приоритет ввода/вывода процесса - ionice

Приоритет вычислений на процессоре - nice

Изменить приоритет вычислений на процессоре - renice

renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]
 
-g      Force who parameters to be interpreted as process group ID's.
-u      Force the who parameters to be interpreted as user names.
-p      Resets the who interpretation to be (the default) process ID's.

Например, повысить приоритет запущенного asterisk на процессоре:

renice -10 `cat /var/run/asterisk/asterisk.pid` 

Практика 

Документация по теме 

Дисковая подсистема

Информация в базе знаний FIBEX

Теория 

Каждое приложение, читая файл или записываю информацию, используется файловый дескриптор. В системе установлено ограничение на количество открытых файловых дескрипторов для процесса (чтобы не было утечек). 

По умолчанию установлено значение 1024 для одного процесса, чего обычно достаточно, но крайне мало. Посмотреть текущие ограничения можно выполнив команду: 

ulimit -a

Понятно, что увеличивая количество доступных файловых дескрипторов, возрастает нагрузка на оперативную память. 

Помимо прочего, есть общее ограничение для системы, которое прописано параметром ядра в файле /proc/sys/fs/file-max. Посмотреть текущее значение можно выполнив команду: 

cat /proc/sys/fs/file-max 

file-max & file-nr: 

The kernel allocates file handles dynamically, but as yet it doesn't free them again. 

The value in file-max denotes the maximum number of file- handles that the Linux kernel will allocate. When you get lots of error messages about running out of file handles, you might want to increase this limit. 

Historically, the three values in file-nr denoted the number of allocated file handles, the number of allocated but unused file handles, and the maximum number of file handles. Linux 2.6 always reports 0 as the number of free file handles – this is not an error, it just means that the number of allocated file handles exactly matches the number of used file handles. 

Attempts to allocate more file descriptors than file-max are reported with printk, look for «VFS: file-max limit reached». 

Кстати, открытые файловые дескрипторы можно посмотреть выполнив команду

lsof

Практика 

Чтобы увеличить допустимое количество открытых файловых дескрипторов для процессов, нужно в файл /etc/security/limits.conf добавить следующие строки:

/etc/security/limits.conf
*                soft    nofile          65535
*                hard    nofile          65535

Изменения вступят после перезагрузки. 

Количество дескрипторов для процесса можно изменить ПЕРЕД его запуском. Для этого в том же терминале, откуда будет запускаться процесс, сначала надо выполнить команду

ulimit -n 65535

Эту же строку можно добавить в init скрипт, в функцию запуска процесса. Но метод через /etc/security/limits.conf является более приоритетным. 

Для изменения количества открытых файлов в системе в целом, нужно изменить параметр ядра file-max, для этого необходимо выполнить команду: 

sysctl -w fs.file-max=1614948

Можно также добавить установку этого параметра в систему при загрузке. Для этого в файл /etc/sysctl.conf нужно добавить строку: 

/etc/sysctl.conf
fs.file-max=1614948

Чтобы изменения в sysctl.conf сразу вступили в силу, нужно выполнить команду:

sysctl -p

Документация по теме 

Теория 

Connection tracking refers to the ability to maintain state information about a connection in memory tables, such as source and destination ip address and port number pairs (known as socket pairs), protocol types, connection state and timeouts. Firewalls that do this are known as stateful. Stateful firewalling is inherently more secure than its «stateless» counterpart …. simple packet filtering. 

The state table for udp and tcp connections is maintained in /proc/net/ip_conntrack. We will discuss what its contents look below. 

The maximum number of connections the state table can contain is stored in /proc/sys/net/ipv4/ip_conntrack_max. This value is determined initially by how much physical memory you have (on my 128Mb machine, ip_conntrack_max = 8184 by default).  

Because UDP lacks sequence numbers, it is known as a «stateless» protocol . However, this does not mean we can't track udp connections. There is still other useful information we can utilize. Here is an example state table entry for a newly formed udp connection: 

udp      17 19 src=192.168.1.2 dst=192.168.1.50 sport=1032 dport=53 [UNREPLIED] src=192.168.1.50 dst=192.168.1.2 sport=53 dport=1032 use=1 

This state table entry can only be made if there is an iptables filter rule specifying NEW connections, something like the following ruleset, which allows NEW connections outbound only (as is often wise): 

iptables -A INPUT     -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT 

Things we can tell from the state table entry are as follows: 

  • The protocol is udp (IP protocol number 17). 
  • The state table entry has 19 seconds until it expires. 
  • Source and destination addresses and ports of original query. 
  • Source and destination addresses and ports of expected reply. The connection is marked UNREPLIED so this has not been received yet. 

Udp timeouts are set in /usr/src/linux/net/ipv4/netfilter/ip_conntrack_proto_udp.c at compile time. A single request will enter into the state for 30*HZ (generally 30 seconds). In the example above, where we have 19 seconds left, 11 seconds have already elapsed without a reply being received. Once a reply is received, and allowed by a rule permitting ESTABLISHED connections, the timeout is reset to 30 seconds and the UNREPLIED mark is removed. Here we see the connection a couple of seconds after this has taken place: 

udp      17 28 src=192.168.1.2 dst=192.168.1.50 sport=1032 dport=53 src=192.168.1.50 dst=192.168.1.2 sport=53 dport=1032 use=1 

If multiple requests and replies occur between the same socket pairs, the entry is considered to be a stream and the timeout changes to 180 seconds. At this point the entry is marked ASSURED (once connections become ASSURED they are not dropped under heavy load ). Here we see the connection a few of seconds after this has taken place: 

udp      17 177 src=192.168.1.2 dst=192.168.1.50 sport=1032 dport=53 src=192.168.1.50 dst=192.168.1.2 sport=53 dport=1032 [ASSURED] use=1 

There is no absolute timeout for a udp connection (or a tcp connection for that matter), provided traffic keeps flowing. 

Практика 

Включение conntrack происходит подгрузкой соответствующего модуля nf_conntrack

modprobe nf_conntrack

Я прописывал грузку модуля в /etc/conf.d/modules, чтобы он автоматически загружался вместе с системой. Конечно, чтобы модуль присутствовал, он должен скомпилирован вместе с ядром ОС, иначе будет отображено сообщение о том, что модуль отсутствует. 

Убедиться, что модуль загружен, можно посмотрев список загруженных модулей: 

lsmod | grep conntrack

nf_conntrack_ipv4       9945  3 nf_nat,iptable_nat
nf_defrag_ipv4          1171  1 nf_conntrack_ipv4
nf_conntrack           48926  3 nf_conntrack_ipv4,nf_nat,iptable_nat 

Также свидетельством того, что модуль в системе присутствует, является наличие файла /proc/net/ip_conntrack с кучей всякого содержимого. Если оно так, это уже хорошо.  

Далее можно изменить максимальное количество сессий, которое будет учитываться ядром. Для этого в файл /etc/sysctl.conf надо добавить строки:

net.ipv4.netfilter.ip_conntrack_max=1048576
net.netfilter.nf_conntrack_max = 1048576
net.nf_conntrack_max = 1048576 

Изменения вступят в силу при перезагрузке автоматически. Но можно применить внесенные изменения в систему сразу, выполнив команду: 

sysctl -p 

Проверить текущие настройки conntrack можно командой 

sysctl -a | grep conntrack 

 Увеличение буферов сетевой карты

Для 6 centos на VMware вот эта инструкция по увеличению буферов сетевой карты - весьма важная штука. без неё на 80+ одновременных вызовах могут быть проблемы

https://vswitchzero.com/2017/09/26/vmxnet3-rx-ring-buffer-exhaustion-and-packet-loss/

Документация по теме 

Наши клиенты

ЦОВ на базе IP АТС FBX :: Core для группы компаний ERG
Система автоматического информирования должников на базе IP АТС FBX :: Core
Автоматизация колл-центра на базе системы IP АТС FBX :: Core с модулем FBX :: Autodialer
Модернизации телефонной сети «Национальной фруктовой компании»
Реорганизация IP телефонии для федеральной сети аптек Здоров.ру
Телефонная сеть для компании Кухонный двор на базе IP АТС FBX :: Core
Телефонная сеть на базе IP АТС FBX :: Core для АО «Теплоэнергосервис»
Автоматизация отдела продаж и миграция с аналоговой телефонии на VoIP
Организация ЦОВ для онлайн-кинотеатра IVI
Автоматизация работы операторов колл-центра поставщика кофейной продукции, компании КофеКАП
ЦОВ для ОФД Казахстана на базе IP АТС FBX :: Core
Система управляемых телеконференций
Система автодозвона и информирования для администрации района
Система IP АТС на базе программного продукта IP АТС FBX :: Core
Объединение территориально распределенных офисов и Call-центров
Система VOIP-телефонии на базе программного продукта IP АТС FBX :: Core
Миграция с аналоговой телефонии на VoIP для стоматологического центра
Автоматизация отдела продаж, путем интеграции VoIP телефонии с CRM
Автоматизации работы операторов на базе FBX :: Call-center
Организована VoIP телефония для трех филиалов медицинского центра
Автоматизация колл-центра на базе FBX :: Call-center
IP АТС FBX :: Core для филиала компании Баусервис

раскажите нам о своей задаче