середа, 28 лютого 2018 р.

Разработчики Instagram о работе с Python и Django

Нашел серию статей разработчиков Instagram о том, к каким методам им приходится прибегать для поддержания работы веб-версии, написанной на Python и Django.

В первой части был рассказ об отключении сборщика мусора в питоне через gc.set_threshold(0). gc.disable() практически не работал, потому что сторонние библиотеки очень любят внутри принудительно включать сборщик мусора (который, к слову, практически не нужен, т.к. все равно есть счетчик ссылок, а сборщик нужен лишь для циклов после преодоления порога алокаций минус деалокаций). Сборщик мусора вызывал Copy-on-Write страниц памяти, разделяемых с главным процессом из за чего росло потребление памяти.

Во второй статье примерно через год после выхода первой эпопея продолжилась. Приложение, разросшееся фичами, перестало справляться с нагрузкой и снова возросло потребление памяти. В итоге было решено часть объектов переместить в старое поколение через gc.freeze() и включить сборку мусора. Результат превзошел ожидания.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments