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







