luajit как основа для сервера приложений - проблемы и...
TRANSCRIPT
![Page 1: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/1.jpg)
LuaJIT как основа для сервера приложенийИгорь Эрлих, IPONWEB
v0.3
![Page 2: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/2.jpg)
Что такое LuaJIT• Среда исполнения для Lua 5.1, включающая в себя трассирующий
JIT-компилятор
![Page 3: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/3.jpg)
Что такое LuaJIT• Среда исполнения для Lua 5.1, включающая в себя трассирующий
JIT-компилятор
• Работает существенно быстрее, чем официальный интерпретатор:x2-x4 без JIT-компиляцииx2-x100 с JIT-компиляцией
![Page 4: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/4.jpg)
Что такое LuaJITРазвивается и поддерживается более десяти лет• 08/09/2005: первый публичный релиз 1.0.3• 14/05/2015: стабильный релиз 2.0.4• Ветка 2.1 в активной разработке
![Page 5: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/5.jpg)
Что такое LuaJITБольшое количество пользователей и моделей применения
![Page 6: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/6.jpg)
LuaJIT @ IPONWEB• Многопоточный веб-сервер
• Бизнес-логика на Lua
• x86_64 GNU/Linux
• LuaJIT 2.0.4 (стабильный релиз)
![Page 7: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/7.jpg)
Проблема #1Ограничения по памяти
![Page 8: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/8.jpg)
Ограничения по памятиСколько доступно управляемой памяти…
• В i686 GNU/Linux – 4GB
![Page 9: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/9.jpg)
Ограничения по памятиСколько доступно управляемой памяти…
• В i686 GNU/Linux – 4GB
• В x86_64 GNU/Linux – 1GB???
![Page 10: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/10.jpg)
Ограничения по памятиtypedef struct Mref { uint32_t ptr32;} Mref;
void *ptr = mmap((void *)MMAP_REGION_START, size, MMAP_PROT, MAP_32BIT|MMAP_FLAGS, -1, 0);
![Page 11: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/11.jpg)
Ограничения по памятиКак справиться?• Снизить количество потоков
![Page 12: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/12.jpg)
Ограничения по памятиКак справиться?• Снизить количество потоков• Перейти от потоков к процессам
![Page 13: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/13.jpg)
Ограничения по памятиКак справиться?• Снизить количество потоков• Перейти от потоков к процессам• Вывести данные в неуправляемую память
![Page 14: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/14.jpg)
Ограничения по памятиКак справиться?• Снизить количество потоков• Перейти от потоков к процессам• Вывести данные в неуправляемую память• Дождаться релиза v2.1
![Page 15: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/15.jpg)
Проблема #2Сборка мусора
![Page 16: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/16.jpg)
Сборка мусора• Mark’n’Sweep сборщик унаследован от Lua 5.1
![Page 17: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/17.jpg)
Сборка мусора• Mark’n’Sweep сборщик унаследован от Lua 5.1• Инкрементальная, но не поддерживает поколения
![Page 18: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/18.jpg)
Сборка мусора• Mark’n’Sweep сборщик унаследован от Lua 5.1• Инкрементальная, но не поддерживает поколения• До 30% производительности на реальных нагрузках!
![Page 19: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/19.jpg)
Проблема #3Управление строками
![Page 20: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/20.jpg)
Такая ситуация…
![Page 21: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/21.jpg)
Управление строкамиhttp://myadsite.org/myhandler/creative_id=15365532&bidder_id=1http://myadsite.org/myhandler/creative_id=15365533&bidder_id=1http://myadsite.org/myhandler/creative_id=15365534&bidder_id=1http://myadsite.org/myhandler/creative_id=15365535&bidder_id=1http://myadsite.org/myhandler/creative_id=15365536&bidder_id=1http://myadsite.org/myhandler/creative_id=15365537&bidder_id=1http://myadsite.org/myhandler/creative_id=15365538&bidder_id=1......
![Page 22: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/22.jpg)
Управление строкамиhttp://myadsite.org/myhandler/creative_id=15365532&bidder_id=1
![Page 23: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/23.jpg)
Выводы• Основное преимущество LuaJIT – высокая скорость работы в
большинстве случаев (особенно в численных вычислениях)• Большое количество управляемой памяти (в смысле количества
объектов или их совокупного размера) может быть реальной проблемой• Много лексикографически похожих слов (URL, пути файловой
системы) – потенциальная DoS уязвимость
![Page 24: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/24.jpg)
Ссылки• https://www.lua.org/• https://luajit.org/• https://github.com/LuaJIT/LuaJIT
• Or contact me:https://ru.linkedin.com/in/iaehrlic
![Page 25: LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (IPONWEB)](https://reader034.vdocuments.pub/reader034/viewer/2022052207/586f90a41a28ab54768b7a19/html5/thumbnails/25.jpg)
Q&A