Π Π΅Π»ΠΈΠ· Memcached 1.6.0 с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ внСшнСго Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°

Бостоялся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· систСмы ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Memcached 1.6.0, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅ΠΉΡΡ простотой использования. Memcached ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся ΠΊΠ°ΠΊ лСгковСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ высоконагруТСнных сайтов ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ доступа ΠΊ Π‘Π£Π‘Π” ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Код поставляСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSD.

Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии стабилизирована рСализация Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° «extstore«, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ собираСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² скриптС configure прСдусмотрСна опция «—disable-extstore»), Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явной Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ запускС (старыС установки послС обновлСния ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±Π΅Π· измСнСния). НС смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ «extstore» ΠΏΡ€ΠΈΠ·Π½Π°Π½ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, рСкомСндуСтся ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… систСмах.

Extstore позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SSD/Flash-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° кэша. Как ΠΈ ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Flash Π½Π΅ являСтся постоянным ΠΈ сбрасываСтся ΠΏΡ€ΠΈ пСрСзапускС. Π’ качСствС области примСнСния Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° называСтся обСспСчСния эффСктивного ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. ΠŸΡ€ΠΈ использовании «extstore» ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, хранится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π½ΠΎ связанныС с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ большиС Π΄Π°Π½Π½Ρ‹Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ установлСнный ΠΏΠΎΡ€ΠΎΠ³, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π²ΠΎ внСшнСС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π° Π² ΠžΠ—Π£ остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Если с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ Memcached Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π΄Π΅Ρ€ΠΆΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти ΠΈ Π½Π΅ обращаСтся ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ. Если свободной памяти ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вострСбованныС Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² кэшС Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Flash ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ большС 1024 Π±Π°ΠΉΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ 3600 сСкунд»).

РСализация ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для обСспСчСния максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ минимальной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° CPU, Π² ΡƒΡ‰Π΅Ρ€Π± эффСктивности хранСния (большой ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ). Для продлСния рСсурса Flash-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Для сохранСния состояния кэша ΠΌΠ΅ΠΆΠ΄Ρƒ пСрСзапусками ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ появившаяся Π² выпускС 1.5.18 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сброса Π΄Π°ΠΌΠΏΠ° с кэшСм Π² Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запускС ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ кэш ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΈΠΊΠΎΠ² Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈΠ·-Π·Π° нСзаполнСнности кэша (кэш сразу становится «Ρ‚Ρ‘ΠΏΠ»Ρ‹ΠΌ»).

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² Memcached 1.6 стала ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ΄Π° для сСтСвого взаимодСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ для автоматичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π°. РаньшС, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ «GET» Π² ΠΎΠ΄Π½ΠΎΠΌ TCP-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, memcached отправлял Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π’ Memcached 1.6 ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π°. Как Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π² срСднСм Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ приходится 1.5 ΠΊΠ»ΡŽΡ‡Π° Π½Π° систСмный Π²Ρ‹Π·ΠΎΠ², Ρ‡Ρ‚ΠΎ дСмонстрируСт Π² тСстах сниТСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° CPU Π΄ΠΎ 25% ΠΈ сокращСниС Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π½Π° нСсколько ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ².

ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвой подсистСмы Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ динамичСскому Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΏΠΎ нСобходимости, вмСсто статичСского назначСния Π±ΡƒΡ„Π΅Ρ€ΠΎΠ². Данная оптимизация сократила ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Ρ‡Π΅Ρ€Π΅Π· установлСнноС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ соСдинСниС с 4.5 Кб Π΄ΠΎ 400-500 Π±Π°ΠΉΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² malloc, realloc ΠΈ free, приводящих ΠΊ лишнСй Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ памяти Π½Π° систСмах с большим числом соСдинСний. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свой ΠΏΡƒΠ» Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² для чтСния ΠΈ записи для Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… клиСнтских соСдинСний. Для настройки Ρ€Π°Π·ΠΌΠ΅Ρ€Π° этих Π±ΡƒΡ„Π΅Ρ€ΠΎΠ²
прСдусмотрСны ΠΎΠΏΡ†ΠΈΠΈ «-o resp_obj_mem_limit=N» ΠΈ «-o read_buf_mem_limt=N».

Π’ Π²Π΅Ρ‚ΠΊΠ΅ 1.6 Ρ‚Π°ΠΊΠΆΠ΅ объявлСно ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ Π² разряд ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° взаимодСйствия с сСрвСром. Π‘ΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ исправлСниС ошибок Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ, Π½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈ обновлСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚. ВСкстовый ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. На смСну Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ ΠΏΡ€ΠΈΡˆΡ‘Π» Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» meta (тСкстовый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ meta-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ), Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ сочСтаниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ надёТности. Новый ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ€Π°Π½Π΅Π΅ доступныС Ρ‡Π΅Ρ€Π΅Π· тСкстовый ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru