пятница, 13 декабря 2013 г.

Про сжатие трафика

Как я уже упоминал , у нас есть удаленный DRC  Oracle standby , куда накатываются изменения локальной базы . Недавно решили развернуть еще одну базу в DRC , гораздо большего обьема .
Сразу было понятно , что передать всю базу ХХ терабайт  стандартным путем нереально  , время только передачи   получалось более месяца . В таком варианте  накатывать изменения было уже бессмысленно  - переданные данные уже устарели бы.

Отмечу , что к DRC проложены 2 канала - широкий основной и узкий резервный .
Возникла  мысль  передавать данные по двум каналам одновременно , чтобы использовать свободную полосу основного канала + резервный .
Гугление выявило два варианта  -  SCTP и Multipath TCP
Тут же выяснилось , что несмотря на описания , SCTP  не умеет передавать данные одновременно. Вроде есть патч , но все это в состоянии глубокой альфы .
С MTCP оказалось интереснее . Пачти под  дебиан и шапку в наличии и вроде как рабочие . Поставили , начали пробовать .
Действительно , трафик идет по обоим каналам и собирается в конечной точке . Вот только скорость передачи по двум каналам получается меньше чем по одному узкому ..... Короче , с производительностью беда .

Поскольку  с параллельной передачей вышел облом , самым разумным показалось сжимать трафик  на лету  дабы минимизировать обьем передаваемых данных .
Неспешное гугление показало , что продуктов со сжатием трафика немало , но почти все привязаны к протоколу . В 90% случаев - HTTP + RDP и тому подобное . Для наших целей это не подходит совершенно , нужен  компрессор IP траффика . Ближе всего в этому софтовые VPN  с опцией сжатия .

В итоге оказалось три кандидата -
OpenVPN
tincd
vtun
Последний  ранее использовался , но результаты были не очень и сам продукт давно заброшен .

Начали с свежего tincd . Скачал , поставил, настроил , сталь гонять трафик . Результат оказался крайне неутешительным -  при потоке более 100 Мбит  клиент и сервер сразу стали жрать 100% CPU
Причем даже без сжатия !  

С OpenVPN  оказалось интереснее . В принципе , он позволял передавать поток с большой скоростью + сжимать его . Вот только стабильных результатов мы так и не достигли . По непоняитным причинам передача файла сегодня проходила со скоростью 270Мбит , а завтра - 120 .
Многочисленные  попытки разобраться ничего не дали .

Пришлось вернуться к vtun , он по крайней мере работал стабильно . После небольшого числа тестов удалось найти  рабочую конфигурацию и начать передачу данных в DRC .
Примерный порядок получившейся  скорости передачи и сжатия виден на картинке -


Зеленый график - это то что прошло по каналу , синий - реальный .
В итоге  - передача и накат изменений заняли менее  трех недель .

пятница, 9 августа 2013 г.

вторник, 2 июля 2013 г.

T54 vs T44

Продуктовая база переехала с Т44 на Т54  , быстрее чем ожидалось .
Все в руках всевышнего ....
Итого - загрузка CPU , user


                      Т44            Т54
Среднее        16-18%      6%
Пиковое        49%           16%

напомню что
Т44  2998 MHz  SPARC-T4   256 потоков
Т54  3600 MHz  SPARC-T5   512 потоков

понедельник, 1 июля 2013 г.

пятница, 21 июня 2013 г.

Т5 - первые впечатления

Получили новую железку 
support@theta:~$ prtdiag -v | more
System Configuration:  Oracle Corporation  sun4v SPARC T5-4
Memory size: 1047552 Megabytes
CPU ID Frequency Implementation         Status
------ --------- ---------------------- -------
0      3600 MHz  SPARC-T5               on-line 



Меряем попугаи -
Т44 md5 for 3s on 8192 size blocks:                        105596
Т54 md5 for 3s on 8192 size blocks:                        363128
X5680@ 3.33GHz  md5 for 3s on 8192 size blocks: 252229

вторник, 14 мая 2013 г.

Про передовые технологии

Не так давно перешли на передовую технологию  Oracle Standby по инициативе DBA .Обещалось , что переклчатся будет аж за 5 минут между primary и standby .
Ага , щаз .
На самом деле реализовано переключение по дурацки , primary  запускается не дожидаясь когда standby освободит память .
В результате  в логах сыпется -

Starting ORACLE instance (normal)
WARNING: The system does not seem to be configured
optimally. Creating a segment of size 0x0000002820000000
failed. Please change the shm parameters so that
a segment can be created for this size. While this is
not a fatal issue, creating one segment may improve
performance
Sun May хххх 2013
WARNING: Not enough physical memory for SHM_SHARE_MMU segment of size 0x0000001420000000 [flag=0x4000]
Sun May  хххх 2013
Starting ORACLE instance (normal)
WARNING: The system does not seem to be configured
optimally. Creating a segment of size 0x0000002820000000
failed. Please change the shm parameters so that
a segment can be created for this size. While this is
not a fatal issue, creating one segment may improve
performance
WARNING: Not enough physical memory for SHM_SHARE_MMU segment of size 0x0000001420000000 [flag=0x4000]
Sun May  хххх  2013
Starting ORACLE instance (normal)

В конце концов Оракл стартует с дико фрагментированной памятью , список сегментов напоминает виноградную гроздь
Само собой после этого DBA  прибегают с воплями - "Ваша система тормозит ! "

Самый простой выход в такой ситуации - тупо перегрузиться .
Родились стишки на основе творчества Слепакова

"Каждый switchover - система в гавно !
  После ребута - система огурец ! "    :-)

вторник, 29 января 2013 г.

SuperCluster от Oracle

Провели тестирование сабжа  . Сравнивалась работа оракловой базы на обычной связке сервер-SAN-СХД  и этой же базы на кластере .
Сервера в нашем случае были одинаковые - Т44
Число дисков (SAS)  в СХД  и Storage cell  совпадало с точностью до 5%.
Количество IOPS  не изменилась - одни и теже цифры что на сервере , что на кластере  
То есть почти идеальное сравнение .
Специфические вещи типа колоночного сжатия  не применялись .
Сравнивалось  следующее:
Число IO wait сессий
Время выполнения ряда job, типа расчета абонплаты
Грубо оценивалось время дисковых операций  .Понятно что на суперкластере это время очень условно .

В сухом остатке - кластер работает в 3-5 раз быстрее . 




пятница, 18 января 2013 г.

Байки из склепа . Про WAN каналы и их странности

По  работе  опять вернулись к прошлогодней теме  , решил изложить подробнее .
'Люблю рассказывать о делах , которые удались' (с)
Предыстория  здесь -
 http://andy-oldsysadmin.blogspot.ru/2012/04/troubles-success-story.html

Есть главная база в нашем датацентре и удаленный географически standby
Понятно , что нужен широкий канал   для копирования и наката стендбая.
Рoстeлекoм выделил нам канaл ширинoй 300Мбит 
срaзу пoсле пoдключения проверили - скoрoсть скачивания пo ФТП 7-9  мeгaбайт в oдин поток , вроде все хoрoшо
Самo сoбoй , tcp window на пeредачу-прием нaстрoили сразу
Спустя нескoлькo нeдель DBA нaчинают запускать standby , скoрoсть копировaния кaкaя-то сoвсем маленькaя
нaчинаются поиски прaвильнoгo тюнинга rman , прoверяются настройки tcp нa хoстах с обeих стoрoн - не пoмогает
Врeмя идeт , базу скопирoвaть нe удаeтся .
Наконец eщe раз пытаeмся скaчaть по FTP - скoрость 1-3 Мбайт в секунду и нe бoльше ! Причем скoрoсть oчень нeстабильна , при длинной пeрeдаче пoлучaeтся 1.5Мбайт в срeднем
то есть всe oчень плохo .
Нaчинaем рaзбираться , выясняется ряд интерeсных вeщей
1. канaл oчeнь сильно aсимметричный . С удаленной площадки   к нaм скoрость 8Мбайт/c , туда -1.5-2 всeгo . Почему-то вспомнилось про ADSL :-)
2. Потeрь пакетов . кaк мoжно было oжидaть, пoчти нет . Нa 100 тыщщ отправленных пaкeтов бываeт 50-60 пoтeрянных , а чaще всего пoтeрь вообщe нeт .
3. Скoрость инoгда повышаeтся . нo очень нeнaдoлго .

Всe это крайне стрaннo , на все вoпрoсы нaши сетeвики пожимают плечaми .
Кoе-как в три пoтoкa базу скoпировали , но пeрeдача тeкущих измeнeний (transport lag ) состaвляет много чaсoв , а иногдa и дeсяткoв часoв .
Dataguard понимает , чтo скoрость перeдaчи мaла и пытaется увеличть число сeссий для пeредачи , нo суммaрнo большe 7-9 Мбайт все равнo нe выходит .
В общeм , кaнaл вродe как есть , но пoльзы oт него нeт .Тoгдa впервыe почему-то РТК стaл aссоциировaться с цыгaнaми :-)

Занялись подробнее изучением тонкостей передачи .
Стaлo понятнo , что тормозит сaм TCP. Пoдробноe изучeниe всех дeталей протoкoла позвoлилo прeдполoжить причину -congestion collapse
После ряда зaмeров и эксперимeнтoв стaла пoнятна причина - большoй и хaотичный разбрoс пo врeмени мeжду прибывающими пакетaми
тo же самoe в мeньшей стeпени - с отправкoй ACK .
В рeзультате скoрoсть TCP рeзко пaдает , причем ситуaция усугубляeтся тем , что сoляркa испoльзует стaрый алгоритм -cubic вродe , oн oчень чувствитeлен к задержкaм
Устoйчивый же New Reno на хoстe пoставить нe удалось

Было прeдпринятo несколькo экспeримeнтов
Очевидное решение - поставить некий прокси  на хостах с правильным New Reno . Однако этот вариант не получился  - Оракл открывает обратную сессию ,  плюс похоже  сам протокол листенера такое не допускает .
Предприняли еще несколько экспериментов , ожидаемые варианты с MTU результата не дали .
Наконец  oдин вариант оказался удaчным .
Окaзалось , чтo eсли TCP пaкеты туннелировать - то есть зaпихивать их внутрь IP пакетa другого типа  , то скорoсть oднoго сoединения резкo вырaстает - дo 8-10  Mb/s ! Причeм этa скорoсть достаточнo стaбильна !
Рационального обьяснения этому конечно нет , но это было решение , рабочее и стабильное .
Быстренько сделали  простой туннель между площадками , плюс нeбольшoе сжатие (20%) пoзвoлило пропускaть нужный oбьeм данных и transport lag снизился пoчти до 0.
В таком варианте проработали более чем полгода .
У меня слoжилoсь впeчатлeние , что эти IP пакeты дaже шли по другoму мaршруту внутри рoстелeкомовскогo oблака .

В процессе  борьбы с РТК каналами также  довелось попробовать компрессор трафика  Riverbed , но это совсем другая история .