BLANCO
-> П
« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...24 25 »
.optimization_graphs
Немного графиков.
Красная стрелочка показывает на тот момент, когда стал проксировать запрос на другой сервер, таким образом уменьшая нагрузку на этот.
 
Автор: Йакуд | O-- | .мыслей 0 [ +1 ]
.optimization_first_results
Итак, имеем первые первые результаты оптимизации.
Перенесли пару сервисов на новый сервис, запроксировал запрос с одного сервиса на другой с помощью nginx'а.
Проксируем запрос таким образом:
 
.........
location = /file.php {
    if ($arg_cmd = "get_config") {
        proxy_pass http://another-server-ip;
    }
    
    if ($arg_cmd = "get_config_new") {
        proxy_pass http://another-server-ip;
    }
    
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
.........

 
Все запросы, которые приходят на file.php и имеют GET/POST параметр cmd равным "get_config" или "get_config_new" проксируются на сервер с адресом "another-server-ip". Нужно было бы посмотреть в сторону map в nginx, т.к. if'ы это зло. Но немного похже исправим.
Таким образом, снизили средний Load average с 10-20 пунктов (до 30 в больших пиках) до 3-8 пунктов. Снизили потребление памяти. Теперь занятая память растет не так быстро. Снизили I/O на дисках ~ на 10-15%.
 
Work in progress...
 
p.s. мониторьте свои сервера, это важно!
Автор: Йакуд | O-- | .мыслей 0 [ +1 ]
.different_code_base
Вот и еще одна "подляночка".
На боевой сервак код деплоится ручками Cry Таким образом мы имеем разные версии кода в git репе и на сервере. Никогда так не делайте, слышите, НИКОГДА!
Автор: Йакуд | O-- | .мыслей 2 [ 0 ]
.server_info
Возникла еще одна проблемка. Сервер (буду называть его stat1) не только собирает и аггрегирует статистику. На нем крутится еще сервисы ответа платежным системам, раздача конфигов клиентам, раздача баннеров.
 
Взяли еще один сервер (буду называть его services1) и переношу туда все эти сервисы и таблички этих сервисов. По характеристикам сервер очень похож на stat1, но памяти 32гб.
 
Нужно еще думать, что делать с большой табличкой юзеров (~17кк+ записей). Либо настраивать master-slave репликацию (что не есть хорошо с таким объемом), либо читать со stat1.
 
Еще большой проблемой является то, что придется переписать много кода (который очень низкого качества), для того, что бы сервисы читали данные со своего сервера.
Work in progress...
Автор: Йакуд | O-- | .мыслей 6 [ 0 ]
.optimization_statistics_db
Подсчитал текущие объемы данных в MySQL (без архивных):
 
Общее кол-во записей: 2 190 896 420
Объем базы данных: 1 336,03gb == 1,30tb
 
Рейтинг толстых табличек:
1. 977 814 710 записей, 1 139,51gb == 1,11tb
2. 56 861 604 записей, 69,28gb == 0,07tb
3. 758 204 289 записей, 36,26gb == 0,035tb
4. 16 940 330 записей, 28,46gb == 0,027tb
5. 297 518 383 записей, 22,42gb == 0,021tb
6. 16 296 499 записей, 15,15gb == 0,014tb
7. 27 436 981 записей, 10,31gb == 0,010tb
 
Совсем не удивительно, что все это тормозит. Напомню, сейчас все данные находится на одном физическом сервере.
Автор: Йакуд | O-- | .мыслей 2 [ +1 ]
.optimization_challenge_accepted
Устроился на новую работу.
Первым делом стал смотреть, с чем придется работать. Имеем сервис статистики, который собирает и аггрегирует статистику с веба/игр, считает MAU/DAU со срезами, строит графики. Архитектура текущей системы очень неудачная. Про код говорить вообще нет желания. Он очень низкого качества, совершенно не поддерживаемый, трудно изменяемый, без каких-либо структур данных. Типичная ситуация - файлик на 2-3к строк кода, в котором перемешан php, верстка, стили, js (который еще и генерируется на лету, с помощью php).
 

-- внутри поста характеристики и подробности --
Автор: Йакуд | O-- | .мыслей 9 [ +1 ]
.msp430_TLog_v02_firmware
В общем, технически (вроде бы, надо еще потестировать) все работает, теперь нужно заняться прошивкой. Там достаточно много тонкостей, например, переход в режим низкого энергопотребления и выход из него, корректная работа с картой памяти, калибровка датчика, установка даты/времени.
Автор: stasundr | O-- | .мыслей 0 [ +1 ]
.msp430_TLog_v02_yt2
Как и обещал Smile
Автор: stasundr | O-- | .мыслей 0 [ +1 ]
.msp430_TLog_v02_yt
Видео работы TLog v02 без SD карты (собрано на макетке). Вместо термистора обычный переменный резистор - им я "эмулирую" изменение температуры.
 

Теперь все то же самое, но термистор занял свое законное место. Светодиод начинает мигать медленнее не сразу после поднесения паяльника, потому что ему нужно нагреться (а потом, остыть).
 

Завтра сниму видео как все работает в собранном виде.
Автор: stasundr | O-- | .мыслей 0 [ +1 ]
.msp430_TLog_v002.p2
Собрал устройство без SD карты. Чтобы протестировать его работу изменил прошивку так, чтобы светодиод мигал с разной частотой в зависимости от температуры (чем выше t - тем быстрее мигает). Работает, но мне не нравится.
 
Я так торопился, что наделал кучу косяков: забыл изменить толщину дорожек, поэтому они были достаточно тонкими (сравните с "красной" платой парой постов ниже). И печатал плату на другом принтере, который бережет тонер. Ещё и когда проглаживал плату торопился. В итоге, в двух местах одной дорожки тонер отвалился и пришлось сверху напаивать провод. Еще резал текстолит обычными ножницами. Получилось криво %) Нужно попробовать канцелярским ножом предварительно делать насечки. Это всё, конечно, не смертельно, но в следующий раз таких глупых ошибок постараюсь не допустить.
 
На ближайшее время план простой: пересобрать устройство, учитывая "ошибки прошлого" и привести в порядок, а затем выложить все файлы по проекту.
 

Автор: stasundr | O-- | .мыслей 0 [ +1 ]