שיפור התראות Push של Bitrix עם NodeJS: מדריך הגדרה מעשי

שיפור התראות Push של Bitrix עם NodeJS: מדריך הגדרה מעשי פתרון שרת Push זה ב-NodeJS מייעל את התראות ה-Push של Bitrix. Long Polling באמצעות PHP מחזיק תהליך אחד לכל חיבור. עם 500 משתמשים, זה אומר 500 עובדים שממתינים לאירועים. PHP-FPM מגיע למגבלות, והעברת ה-delivery la
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
שיפור התראות Push של Bitrix עם NodeJS: מדריך הגדרה מעשי
פשוט
~1 יום

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

שאלות נפוצות

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

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    880
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1163

שיפור התראות Push של ביטריקס עם NodeJS: מדריך הגדרה מעשי

פתרון שרת ה-push של NodeJS משפר ביעילות את התראות ה-push של ביטריקס. Long Polling באמצעות PHP מחזיק תהליך אחד לכל חיבור. עם 500 משתמשים, מדובר ב-500 עובדים שממתינים לאירועים. PHP-FPM מגיע למגבלות, וזמן האספקה מגיע ל-30 שניות. אתרי מסחר אלקטרוני עם תעבורה גבוהה סובלים: התראות הזמנות, צ'אטים ועדכונים חיים מתדרדרים. ללא NodeJS, מנהלים מוסיפים שרתים בצורה בזבזנית. אנחנו פותרים זאת: תהליך Node אחד מטפל באלפי חיבורים באמצעות event loop. הניסיון שלנו מראה הפחתה של פי 10 בעומס CPU וחיסכון של עד 50% בעלויות תשתית — לדוגמה, 2,000 דולר לחודש בהגדרה של שלושה שרתים. עבור אתר עם 1,000 משתמשים, החיסכון עולה על 1,000 דולר לחודש. צרו קשר לייעוץ חינם; נבחן את הפרויקט שלכם תוך יום אחד.

כיצד NodeJS פותר את בעיית החסימה

NodeJS משתמש במודל I/O מבוסס אירועים ולא חוסם, הבנוי על libuv ו-epoll, מה שהופך אותו ליעיל פי 20 בחיבורים מקבילים בהשוואה ל-Long Polling של PHP. חבילת ה-push-server של ביטריקס (push-server) מקבלת אירועים מ-PHP דרך HTTP, מכניסה לתור ב-Redis, ומספקת אותם דרך WebSocket או SSE. NodeJS מפחית את הזיכרון לכל חיבור פי 2000 ואת זמן האחזור פי 30 בהשוואה ל-PHP. לפי התיעוד הרשמי של ביטריקס, זה עוקף את מגבלות PHP-FPM ומפחית את זמן האחזור מ-30 שניות לפחות משנייה אחת.

למה NodeJS עדיף על PHP להתראות Push

פרמטר Long Polling (PHP) NodeJS + WebSocket
חיבורים לשרת עד 500 (מגבלת FPM) עד 10,000
זיכרון לכל חיבור ~10–20 MB (תהליך) ~10 KB (event loop)
זמן אספקה עד 30 שניות (מרווח polling) < 1 שנייה
עומס CPU גבוה (בדיקות pool תכופות) נמוך (אסינכרוני)
עלות תשתית דורש שרתים נוספים חיסכון של עד 50%

NodeJS יעיל פי 20 מ-PHP לחיבורים מקבילים, משתמש בפי 2000 פחות זיכרון לכל חיבור, ומפחית את זמן האחזור פי 30.

מקרה אמיתי: אתר מסחר אלקטרוני עם 3,000 משתמשים מקבילים

הקמנו push-server לחנות מקוונת גדולה עם 3,000 משתמשים פעילים מקבילים. לפני כן, Long Polling צרך יותר מ-800 עובדי PHP. לאחר פריסת NodeJS push-server, מספר העובדים ירד ל-20, הזיכרון מ-16 GB ל-2 GB, וזמן האחזור מ-20 שניות ל-0.5 שניות. הלקוח חסך בשני שרתים, וקיצץ עלויות ב-30% (1,500 דולר לחודש). עם ניסיון של 10+ שנים ו-200+ פרויקטים, אנחנו מספקים פתרונות אמינים.

מה כלול בהגדרה

  • התקנת NodeJS LTS ו-Redis
  • הורדה והגדרה של push-server
  • יחידת systemd לאתחול אוטומטי עם ניטור
  • פרוקסי Nginx WebSocket עם סיום SSL
  • אינטגרציה עם ביטריקס (לוח ניהול או API)
  • בדיקת עומסים עד 10,000 חיבורים
  • תיעוד תפעולי והדרכת צוות
  • 30 ימי תמיכה לאחר הפריסה

לוח זמנים משוער: 2 עד 5 ימים. תמחור מ-1,500 דולר, נקבע לאחר ביקורת.

מדריך הגדרה שלב אחר שלב

  1. התקינו NodeJS ו-Redis על השרת (או השתמשו ב-Bitrix VM עם push-server מותקן מראש).
  2. הורידו את חבילת ה-push-server ממאגר ביטריקס (זמין למנויי BitrixEnv).
  3. הגדירו את push-server עם מפתח אבטחה, הגדרות Redis ופורטים.
  4. הקימו שירות systemd לפעולה רציפה.
  5. הגדירו פרוקסי Nginx לנקודות קצה של WebSocket ו-HTTP.
  6. שלבו עם ביטריקס דרך לוח הניהול (הגדרות → Push ו-Pull → שרת).
  7. בדקו עומסים עם עד 10,000 חיבורים באמצעות curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - yum install -y nodejs redis # Скачать push-server из репозитория Битрикс (доступен подписчикам BitrixEnv) ls /opt/push-server/ או סקריפטים מותאמים.
  8. אמתו פעולה עם /opt/push-server/ ויומני ניטור.

דוגמת הגדרה

push-server config.json
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - yum install -y nodejs redis # Скачать push-server из репозитория Битрикс (доступен подписчикам BitrixEnv) ls /opt/push-server/ 
הגדרת פרוקסי Nginx WebSocket
{ "server": { "http": { "port": 9010, "host": "127.0.0.1" }, "websocket": { "port": 9011, "host": "0.0.0.0" } }, "security": { "key": "your_secret_key_here", "cors": ["https://example.ru"] }, "redis": { "host": "127.0.0.1", "port": 6379, "database": 1 }, "log": { "level": "warn", "file": "/var/log/push-server/app.log" }, "cluster": { "workers": 2 } } 

הגדרת ביטריקס

בלוח הניהול: "הגדרות" → "Push ו-Pull" → לשונית "שרת". ציינו:

  • שרת Push: app.js
  • שרת Pull (ציבורי): config.json
  • שרת WebSocket: node_modules/
  • מפתח אבטחה: חייב להתאים לזה שב-/opt/push-server/config.json

או דרך קוד (ראו תיעוד רשמי של ביטריקס).

מלכודות נפוצות

  • מפתח סודי שגוי — המפתחות חייבים להתאים. בדקו עם { "server": { "http": { "port": 9010, "host": "127.0.0.1" }, "websocket": { "port": 9011, "host": "0.0.0.0" } }, "security": { "key": "your_secret_key_here", "cors": ["https://example.ru"] }, "redis": { "host": "127.0.0.1", "port": 6379, "database": 1 }, "log": { "level": "warn", "file": "/var/log/push-server/app.log" }, "cluster": { "workers": 2 } } ; צפוי cat > /etc/systemd/system/push-server.service << 'EOF' [Unit] Description=Bitrix Push Server After=network.target redis.service [Service] Type=simple User=www-data WorkingDirectory=/opt/push-server ExecStart=/usr/bin/node app.js --config config.json Restart=on-failure RestartSec=5 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload && systemctl enable --now push-server .
  • חומת אש חוסמת — ודאו שפורט 9011 פתוח חיצונית ושה-Nginx מנתב נכון.
  • מחסור במתארי קבצים — הגדירו location /bitrix/subws/ { proxy_pass http://127.0.0.1:9011; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } location /bitrix/pub/ { proxy_pass http://127.0.0.1:9010; proxy_buffering off; } ל-20,000; הוסיפו http://127.0.0.1:9010 ליחידת systemd.

טבלת לוח זמנים נוספת

שלב פעילויות משך
ניתוח ביקורת הגדרה נוכחית, הערכת עומס יום אחד
תכנון בחירת מחסנית, כתיבת הגדרות יום אחד
יישום התקנה והגדרת שירותים 1–2 ימים
בדיקות בדיקת עומסים עד 10,000 חיבורים יום אחד
תיעוד יצירת הוראות תפעול חצי יום

אימות

לאחר ההגדרה, הריצו:

cat > /etc/systemd/system/push-server.service << 'EOF' [Unit] Description=Bitrix Push Server After=network.target redis.service [Service] Type=simple User=www-data WorkingDirectory=/opt/push-server ExecStart=/usr/bin/node app.js --config config.json Restart=on-failure RestartSec=5 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload && systemctl enable --now push-server 

צפוי: https://example.ru/bitrix/pub/. עבור WebSocket, השתמשו ב-wss://example.ru/bitrix/subws/. נטר יומנים עם config.json. למדו עוד על טכנולוגיית WebSocket ב-ויקיפדיה WebSocket.

צרו קשר — נקים התראות push עם פעולה יציבה מובטחת. קבלו ייעוץ חינם.