הגדרת Redis עבור סשנים של Magento 2: מדריך מלא

כאשר חנות Magento 2 שלך מאטה תחת עומס גובר, הפעלות המשתמש הן הראשונות לסבול—עגלות קניות נמחקות, ופאנל הניהול קופא. אנו מגדירים את Redis לאחסון הפעלות, ומפרידים בין מטמון לנתוני לקוחות כדי למנוע אובדן ולהאיץ פעולות. הצוות שלנו מספק יישום מלא, החל מבדיקת מערכת ועד פריסה ותמיכה שוטפת, תוך הבטחת יציבות גם בשעות השיא.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת Redis עבור סשנים של Magento 2: מדריך מלא
בינוני
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1050
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

הגדרת Redis עבור סשנים של Magento 2: מדריך מלא

מבוא

כאשר העומס גדל בחנות מקוונת של Magento 2, הדבר הראשון שמאט הוא סשנים של משתמשים. אחסון סשנים מבוסס קבצים יוצר לחץ על inode במערכת הקבצים ומכניס חסימה במהלך בקשות AJAX מקבילות. אנחנו, מהנדסים עם ניסיון בהטמעת Redis בפרויקטים בעלי עומס גבוה, נתקלנו בבעיה זו עשרות פעמים. פעם אחת, לקוח הגיע עם מצב: עגלות לקוחות נוקו מעת לעת, ולוח הניהול קפא למשך 30 שניות בעומסי שיא. הפתרון — העברת סשנים למופע Redis נפרד עם הגדרה נכונה.

Magento 2 תומך בשני חיבורי Redis עצמאיים: אחד עבור מטמון יישומים (בלוקים, תצורה, FPC), ואחר עבור סשנים של משתמשים. הפרדה למסדי נתונים שונים של Redis היא חובה; אחרת, פעולת FLUSHDB במהלך ניקוי מטמון תמחק את כל הסשנים הפעילים של לקוחות. בפרויקט שלנו, השתמשנו בשני מופעים: אחד עם מדיניות var/session/ עבור מטמון, ואחר עם env.php עבור סשנים — זה ביטל לחלוטין אובדן נתונים וחסך משאבי שרת.

בעיות שנפתרות על ידי Redis עבור סשנים של Magento 2

כברירת מחדל, Magento מאחסן סשנים במערכת הקבצים ('session' => [ 'save' => 'redis', 'redis' => [ 'host' => '127.0.0.1', 'port' => '6379', 'password' => 'strongpassword', 'timeout' => '2.5', 'persistent_identifier' => '', 'database' => '2', // отдельная БД от кэша 'compression_threshold' => '2048', 'compression_lib' => 'gzip', 'log_level' => '1', 'max_concurrency' => '6', 'break_after_frontend' => '5', 'break_after_adminhtml' => '30', 'first_lifetime' => '600', 'bot_first_lifetime' => '60', 'bot_lifetime' => '7200', 'disable_locking' => '0', 'min_lifetime' => '60', 'max_lifetime' => '29500', 'sentinel_master' => '', 'sentinel_servers' => '', 'sentinel_connect_retries'=> '5', 'sentinel_verify_master' => '0', ], ], 'cache' => [ 'frontend' => [ 'default' => [ 'backend' => 'Cm_Cache_Backend_Redis', 'backend_options' => [ 'server' => '127.0.0.1', 'port' => '6379', 'database' => '0', // БД 0 для кэша 'password' => 'strongpassword', 'compress_data' => '1', 'compress_tags' => '1', 'compression_lib' => 'gzip', 'read_timeout' => '1.5', ], ], 'page_cache' => [ 'backend' => 'Cm_Cache_Backend_Redis', 'backend_options' => [ 'server' => '127.0.0.1', 'port' => '6379', 'database' => '1', // БД 1 для FPC 'password' => 'strongpassword', 'compress_data' => '0', // FPC не сжимаем: больше памяти, быстрее ], ], ], ], ). ככל שהתנועה גדלה, זה גורם ל:

  • אלפי קבצים קטנים על מערכת קבצים אחת יוצרים לחץ על inode.
  • נעילת קבצים במהלך בקשות AJAX מקבילות מאותו משתמש.
  • באשכול, מספר צמתים לא יכולים לראות את הסשנים של זה.

התיעוד הרשמי של Magento ממליץ על Redis עבור סשנים החל מגרסה 2.2, במיוחד עבור הגדרות מרובות אתרים. Redis פותר את כל שלוש הבעיות: פעולות אטומיות ללא נעילה, אחסון מרכזי, ועובד עם Redis Sentinel/Cluster עבור זמינות גבוהה.

השוואה בין אחסון קבצים לעומת Redis עבור סשנים:

קריטריון סשנים מבוססי קבצים סשנים מבוססי Redis
מהירות כתיבה 1-5 אלפיות שנייה (עם נעילה) <0.1 אלפיות שנייה (ללא נעילה)
לחץ על inode גבוה (אלפי קבצים) אין (הכל בזיכרון)
אשכולות לא נתמך Sentinel/Cluster
סובלנות לתקלות נמוכה AOF + שכפול
נעילה כן (נעילת קבצים) לא (פעולות אטומיות)

כיצד להגדיר שני מופעי Redis עצמאיים עבור סשנים ומטמון

התצורה ב-/etc/redis/redis.conf דורשת שני בלוקים: עבור מטמון ועבור סשנים. תצורה מלאה:

דוגמה לתצורת env.php
'session' => [ 'save' => 'redis', 'redis' => [ 'host' => '127.0.0.1', 'port' => '6379', 'password' => 'strongpassword', 'timeout' => '2.5', 'persistent_identifier' => '', 'database' => '2', // отдельная БД от кэша 'compression_threshold' => '2048', 'compression_lib' => 'gzip', 'log_level' => '1', 'max_concurrency' => '6', 'break_after_frontend' => '5', 'break_after_adminhtml' => '30', 'first_lifetime' => '600', 'bot_first_lifetime' => '60', 'bot_lifetime' => '7200', 'disable_locking' => '0', 'min_lifetime' => '60', 'max_lifetime' => '29500', 'sentinel_master' => '', 'sentinel_servers' => '', 'sentinel_connect_retries'=> '5', 'sentinel_verify_master' => '0', ], ], 'cache' => [ 'frontend' => [ 'default' => [ 'backend' => 'Cm_Cache_Backend_Redis', 'backend_options' => [ 'server' => '127.0.0.1', 'port' => '6379', 'database' => '0', // БД 0 для кэша 'password' => 'strongpassword', 'compress_data' => '1', 'compress_tags' => '1', 'compression_lib' => 'gzip', 'read_timeout' => '1.5', ], ], 'page_cache' => [ 'backend' => 'Cm_Cache_Backend_Redis', 'backend_options' => [ 'server' => '127.0.0.1', 'port' => '6379', 'database' => '1', // БД 1 для FPC 'password' => 'strongpassword', 'compress_data' => '0', // FPC не сжимаем: больше памяти, быстрее ], ], ], ], 

בסך הכל, שלושה מסדי נתונים של Redis: 0 — מטמון, 1 — FPC, 2 — סשנים.

הגדרת Redis עבור Magento תחת עומס

maxmemory 2gb maxmemory-policy allkeys-lru # Сессии не должны вытесняться → выделяем отдельный инстанс # Лучше запускать два redis: :6379 для кэша, :6380 для сессий save "" # Для кэша persistence не нужна appendonly no tcp-keepalive 60 timeout 300 (הגדרות ספציפיות ל-Magento):

maxmemory 2gb
maxmemory-policy allkeys-lru
# Сессии не должны вытесняться → выделяем отдельный инстанс
# Лучше запускать два redis: :6379 для кэша, :6380 для сессий
save ""
# Для кэша persistence не нужна
appendonly no
tcp-keepalive 60
timeout 300

עבור סשנים על פורט נפרד /etc/redis/redis-sessions.conf:

port 6380
maxmemory 512mb
maxmemory-policy noeviction # сессии нельзя вытеснять
appendonly yes # persistence для сессий
appendfsync everysec

לאחר מכן ב-port 6380 maxmemory 512mb maxmemory-policy noeviction # сессии нельзя вытеснять appendonly yes # persistence для сессий appendfsync everysec , שנה את פורט הסשנים ל-env.php ואת 6380 ל-database.

פרמטרים המשפיעים על ביצועי סשנים

טבלת פרמטרים מרכזיים:

פרמטר המלצה השפעה
0 6-15 ערך גבוה יותר מגדיל בקשות מקבילות לכל סשן
max_concurrency 5-10 השהיה לפני ניתוק חיבור בשגיאה
break_after_frontend 2048 סף (בייטים) לדחיסת נתוני סשן
compression_threshold 0 או 1 0 — נעילה למניעת מצבי מרוץ, 1 — מהיר יותר אך מסוכן

כיצד לוודא פעולת סשנים תקינה לאחר התצורה

# Убедиться что сессии пишутся в Redis
redis-cli -p 6380 KEYS "sess_*" | wc -l

# Посмотреть содержимое сессии
redis-cli -p 6380 GET "sess_abc123xyz"

# Мониторинг в реальном времени
redis-cli -p 6379 MONITOR | grep -i "sess\|cache"

# Hit rate кэша
redis-cli -p 6379 INFO stats | grep -E "keyspace_hits|keyspace_misses"

שיעור פגיעות המטמון צריך להיות מעל 80%. אם נמוך יותר, disable_locking או # Убедиться что сессии пишутся в Redis redis-cli -p 6380 KEYS "sess_*" | wc -l # Посмотреть содержимое сессии redis-cli -p 6380 GET "sess_abc123xyz" # Мониторинг в реальном времени redis-cli -p 6379 MONITOR | grep -i "sess\|cache" # Hit rate кэша redis-cli -p 6379 INFO stats | grep -E "keyspace_hits|keyspace_misses" אינם מספיקים: LRU מסיר ערכים חדשים. עבור סשנים, השתמש במופע נפרד עם max_lifetime כדי למנוע אובדן נתונים תחת לחץ זיכרון.

מה כלול בעבודה שלנו

אנו מציעים הגדרה מקיפה של Redis עבור Magento 2:

  • ביקורת של תצורת הסשנים והמטמון הנוכחית.
  • התקנה והגדרה של שני מופעי Redis עצמאיים המותאמים לעומס שלך.
  • אופטימיזציה של פרמטרי maxmemory עבור החנות הספציפית שלך.
  • בדיקת סשנים ומטמון (שיעור פגיעות, זמן תגובה).
  • תיעוד על ניטור וגיבוי.
  • הדרכת צוות (כיצד לצפות בלוגים, לאסוף מדדים).

אנו מבטיחים פעולה יציבה של סשנים ומטמון לאחר התצורה. מעל 60 פרויקטים על Magento 2 רצים בהצלחה על התצורה שלנו. הזמינו ביקורת של המערכת שלכם — נעריך את העומס ונכין הצעה.

תהליך העבודה שלנו

  1. ניתוח — לימוד לוגי nginx, עומס שרת, תצורת סשנים נוכחית.
  2. עיצוב — בחירת ארכיטקטורה (מופע אחד עם מסדי נתונים שונים או שני מופעים).
  3. יישום — הגדרת Redis ו-env.php, החלת שינויים.
  4. בדיקות — אימות התחברות, עגלה, לוח ניהול תחת עומס.
  5. פריסה — יישום בסביבת הייצור, ניטור למשך 48 שעות.

לוח זמנים

הגדרת שני מופעי Redis, התקנת env.php, בדיקת סשנים ומטמון: יום אחד. הגדרת Redis Sentinel עבור זמינות גבוהה (אם נדרש): 1-2 ימים נוספים.

אם אתם נתקלים בהאטות בלוח הניהול או באובדן עגלות — צרו קשר. נעריך את העומס שלכם ביום אחד ונציע תצורה. קבלו ייעוץ מהנדס היום.