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

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

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

שאלות נפוצות

שיפור התראות 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 из репозитория Bitrix (доступен подписчикам 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 из репозитория Bitrix (доступен подписчикам 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 עם פעולה יציבה מובטחת. קבלו ייעוץ.