Skip to content


P..nhub шутить изволят

Cегодня тот редкий день когда pornhub.com выглядит вполне себе family-friendly:

pornhub 1-st of april

cornhub.com

Всех с 1-ым апреля :)

Posted in Развлекуха.


О пользе irqbalance

Однажды приключилась неприятная фигня. Симптомы:

  • Потери ICMP-пакетов
  • Пинг 130 мс при норме 30мс
  • top выглядит крайне скверно (особое внимание на 70% у ksoftirqd/0):
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    16763 catalina  20   0 33.3g  13g  13m S 938.0 21.2  36335:28 java
        4 root      20   0     0    0    0 R 70.3  0.0 188:10.66 ksoftirqd/0
    10362 haproxy   20   0 1411m 1.3g 1784 R 66.3  2.1   3:24.43 haproxy
    10361 haproxy   20   0 1255m 1.1g 1800 R 61.4  1.8   3:14.30 haproxy
    10360 haproxy   20   0 1163m 1.1g 1780 R 56.8  1.7   3:04.97 haproxy
    10359 haproxy   20   0 1032m 951m 1796 S 48.6  1.5   2:51.85 haproxy
    10358 haproxy   20   0  995m 916m 1800 S 43.7  1.4   2:44.77 haproxy
    10357 haproxy   20   0  915m 836m 1776 R 33.5  1.3   2:33.69 haproxy
    10356 haproxy   20   0  841m 764m 1776 D 32.5  1.2   2:27.62 haproxy
    10355 haproxy   20   0  800m 724m 1800 R 29.5  1.1   2:20.10 haproxy
  • Все прерывания от сетевой карты обслуживаются только одним ядром (из 24-ех):
    # cat /proc/interrupts | grep -E "CPU|em1" | sed -r "s/ +/  /g" | sed -r "s/CPU//g"
                     0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23
      125:   146771849  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  IR-PCI-MSI-edge  em1-0
      126:  2740374640  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  IR-PCI-MSI-edge  em1-1
      127:  2693791925  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  IR-PCI-MSI-edge  em1-2
      128:  2693712466  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  IR-PCI-MSI-edge  em1-3
      129:  2695319407  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  IR-PCI-MSI-edge  em1-4

Вспомнилась картинка:

Как правильно копать яму

Team work.


И, конечно же, возникла идея поправить это безобразие. Но ждал облом:

# service irqbalance start
Starting irqbalance: irqbalance: symbol lookup error: irqbalance: undefined symbol: g_list_free_full
                                                           [FAILED]

Небольшое гугление подсказало, что, возможно, имеем дело с устаревшей версией пакета glib2. Пробуем обновить:

# yum update glib2
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package glib2.x86_64 0:2.26.1-7.el6_5 will be updated
---> Package glib2.x86_64 0:2.28.8-4.el6 will be an update
--> Finished Dependency Resolution
 
# tail -n 1 /var/log/yum.log
Nov 20 16:19:34 Updated: glib2-2.28.8-4.el6.x86_64

После этого случилось чудо и irqbalance таки запустился:

# service irqbalance start
Starting irqbalance:                                       [  OK  ]

И получаем вот такую красоту (прерывания стали распределяться и по другим ядрам тоже):

# cat /proc/interrupts | grep -E "CPU|em1" | sed -r "s/ +/  /g" | sed -r "s/CPU//g"
                 0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23
  125:   146771849  0  0  0  0  0  0  0  2964882  0  0  0  39242  0  75507  0  0  0  0  0  0  0  0  0  IR-PCI-MSI-edge  em1-0
  126:  2740374640  0  7566544  0  0  0  0  0  0  0  0  0  10004  0  0  0  162137  0  0  0  0  0  0  0 IR-PCI-MSI-edge  em1-1
  127:  2693791925  0  0  0  0  0  0  0  0  0  0  0  8771  0  7319795  0  0  0  157178  0  0  0  0  0  IR-PCI-MSI-edge  em1-2
  128:  2693712466  0  0  0  0  0  0  0  0  0  0  0  7369768  0  0  0  0  0  0  0  158210  0  0  0     IR-PCI-MSI-edge  em1-3
  129:  2695319407  0  0  0  0  0  0  0  0  0  0  0  77028  0  0  0  0  0  7301320  0  0  0  158271  0 IR-PCI-MSI-edge  em1-4

Далее пинг падает до со 130 до 30 мс, ICMP-потери прекращаются, nagios перестаёт вопить про периодически недоступные сервисы, ksoftirqd из top-а пропадает:

top - 16:39:53 up 79 days,  2:41, 18 users,  load average: 40.03, 35.48, 27.67
Tasks: 446 total,   9 running, 437 sleeping,   0 stopped,   0 zombie
Cpu(s): 54.0%us, 16.9%sy,  0.0%ni, 19.8%id,  0.0%wa,  0.0%hi,  9.4%si,  0.0%st
Mem:  65920820k total, 40078188k used, 25842632k free,   261184k buffers
Swap:  8290296k total,        0k used,  8290296k free, 11422368k cached
 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16763 catalina  20   0 32.6g  13g  13m S 1452.3 21.0  36642:46 java
15460 haproxy   20   0  702m 627m 2276 R 60.3  1.0   9:55.44 haproxy
15464 haproxy   20   0  758m 679m 2276 R 59.4  1.1  10:26.81 haproxy
15459 haproxy   20   0  729m 653m 2272 R 58.0  1.0   9:53.93 haproxy
15463 haproxy   20   0  729m 652m 2268 R 58.0  1.0  10:23.88 haproxy
15462 haproxy   20   0  725m 649m 2308 R 57.4  1.0  10:13.97 haproxy
15466 haproxy   20   0  771m 693m 2296 R 54.8  1.1  10:33.94 haproxy
15468 haproxy   20   0  722m 645m 2308 R 51.8  1.0  10:26.30 haproxy
15461 haproxy   20   0  737m 661m 2308 R 51.5  1.0  10:05.91 haproxy
26785 avz       20   0 15296 1600  988 R  1.0  0.0   0:00.07 top
15539 root      20   0 15296 1624  988 S  0.7  0.0   0:13.21 top
   73 root      20   0     0    0    0 S  0.3  0.0   6:55.14 ksoftirqd/17

Вот такая поучительная история о пользе irqbalance для сильнонагруженных трафиком серверов.

Posted in *nix.

Tagged with .


r8169: после выхода из спящего режима не работает сеть

На ноутбуке Dell Vostro 5470 с Fedora 21 на борту наблюдалась очень неприятная проблема – после выхода из спящего режима переставала работать сеть через медный интерфейс. После перезагрузки опять работала. Но а поскольку это все же ноут, то очень хотелось проблему побороть, так как заряд батареи нужно экономить и без спящего режима ну никак не обойтись.

Сетевая карта там вот такая:

# lspci -vvv | sed -r '/Ethernet/,/module/ !d' | grep -E "Ethernet|module"
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
        Kernel modules: r8169

В процессе танцев с бубном в том числе запускался и tcpdump дла анализа проблемы. Ну и между делом случайно заметил, что если ноут уходит в спячку с запущенным tcpdump-ом, то после пробуждения вышеописанная проблема не возникает. Это навело на мысль, что, возможно, promiscuous режим работы сетевого интерфейса как-то помогает ему проснуться в добром здравии и в адекватном рабочем состоянии. Гипотеза подтвердилась после нескольких тестов.

Поскольку в Fedora 21 всем рулит systemd, то далее пришлось погуглить ответ на вопрос "Как выполнить мой скрипт при пробуждении". Ответ нашелся довольно быстро – вот так:

Создаем файл /usr/lib/systemd/system-sleep/local.sh, делаем ему chmod +x

#!/bin/bash
 
if [ "$1" = "post" ]; then
  /sbin/ifconfig enp7s0 promisc
  logger "Custom wakeup script fired ($0)"
fi
exit 0

Здесь enp7s0 – имя моего сетевого интерфейса. logger добавлен для диагностики, чтобы было понятно выполнялся скрипт при выходе из спящего режима или нет.

И шо вы думаете? Таки помогло! Теперь сетка нормально работает независимо от количества засыпаний ноута. Красота!

Posted in *nix, Howto.


Конфиг haproxy для оценки A от SSLLabs.com

1. В секцию global конфига haproxy.cfg добавляем

ssl-default-bind-ciphers   ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-server-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

2. В конфигурации фронтенда отключаем SSL v3:

frontend ssl-fe
  bind 10.10.10.10:443 ssl no-sslv3 crt /path/to/certs-with-key.pem

Если SSL-сертификат был выпущен доверенным центром сертификации и при создании приватного ключа НЕ был выбран Signature Algorithm SHA1, то ssllabs.com должен показать нечто примерно такое:

ssllabs A-grade haproxy config

Выключаем слабые алгоритмы шифрования

А вот полезная ссылочка – конструктор конфигов для пополярных веб-серверов, где можно подобрать алгоритмы шифрования с учетом требуемого уровня совместимости с устаревшими версиями программного обеспечения на клиентах.

Posted in *nix.

Tagged with , , .