[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: node.js 100% cpu
Страницы: 1, 2
VELIK505
при 5000 подключений по сокетам.
Server listening at address xxx.xxx.xxx.xx:3000
Change board to: evaviktoriya
Concurrent connections count: 72
Concurrent connections count: 101
Concurrent connections count: 140
Concurrent connections count: 173
Concurrent connections count: 209
Concurrent connections count: 232
Concurrent connections count: 259
Concurrent connections count: 291
Concurrent connections count: 308
Concurrent connections count: 335
Concurrent connections count: 358
Concurrent connections count: 370
Concurrent connections count: 391
Concurrent connections count: 404
Concurrent connections count: 412
Concurrent connections count: 429
Concurrent connections count: 452
Concurrent connections count: 465
Concurrent connections count: 477
Concurrent connections count: 502
Concurrent connections count: 509
Concurrent connections count: 506
Concurrent connections count: 520
Concurrent connections count: 506
.....
Concurrent connections count: 5015
node.js валит 1 ядро на 100%.
user posted image
скрипт безобидный. Запускается через forever
Делал по статейке настройки http://www.jayway.com/2015/04/13/600k-conc...-using-node-js/
как они держат на таком же сервере 600к подключений? Чего я незнаю?
Oyeme
1.Попробуй использовать posix

npm install posix


// raise maximum number of open file descriptors to 10k,
// hard limit is left unchanged
posix.setrlimit('nofile', { soft: 10000 });

2.Проверь ulimit -n (/etc/security/limits.conf )
3.Использовать Cluster
VELIK505
/etc/security/limits.conf
nginx        soft    nofile  131072
nginx hard nofile 132096

apache soft nofile 131072
apache hard nofile 132096

root soft nofile 1000000
root hard nofile 1000000


/etc/security/limits.d/90-nproc.conf
root       soft    nproc     unlimited

После правок /etc/security/limits.conf ребутить ничего не надо? изменения на лету вступают же?
Кластеризацию буду делать сейчас для ноды сейчас.
Сокеты держат отлично и пропускают и подключаются быстро очень к сокетам. и ничего не падает.
Напрягает что сама node.js жрёт много % CPU.
За вместо fs.watchFile стал использовать fs.watch нагрузка упала до 20-30% иногда прыгает до 80% может сборщик уже подгружает.
После кластеризации отпишусь.
Oyeme
Отключите socket pooling

https://nodejs.org/docs/v0.6.3/api/http.htm...gent.maxSockets
Цитата

За вместо fs.watchFile стал использовать fs.watch нагрузка упала до 20-30% иногда прыгает до 80% может сборщик уже подгружает.


Отлично, fs.watchFile уже устарел давно.
VELIK505
Oyeme
Круто. Заметил что когда рубилово на доске начинаеться в секунду по 3-4 раза файл перезаписывается откуда нода берёт результат. то node.js начинает прыгать до 80% CPU
inpost
VELIK505
Как минимум постарайся отказаться от работы с файлами в скрипте. Храни данные в памяти. Мне почему-то кажется, что как раз в этом и дело.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
VELIK505
Цитата (inpost @ 21.01.2016 - 15:41)
VELIK505
Как минимум постарайся отказаться от работы с файлами в скрипте. Храни данные в памяти. Мне почему-то кажется, что как раз в этом и дело.

inpost там файл то фигня по сути: {"idu":912144,"user":"orhon","refbek":"70","avatar":"http:\/\/static.mysite.com\/ava\/o\/orhon.png","rating_text":"\u0411\u0440\u0438\u0433\u0430\u0434\u0438\u0440","komment":""} вот и всё что нода достаёт из него=) Но попробую писать в мемкеш
inpost
VELIK505
Не в размере файла дело, дело в том, что ты дёргаешь этот самый файл постоянно, а это большая нагрузка на файловую систему. Попробуй заменить и отпишись о результатах, мне самому интересно.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Ron
Цитата (inpost @ 21.01.2016 - 21:35)
это большая нагрузка на файловую систему.

А что такое нагрузка на ФС, можно услышать? =)

VELIK505
Цитата (Ron @ 21.01.2016 - 20:23)
Цитата (inpost @ 21.01.2016 - 21:35)
это большая нагрузка на файловую систему.

А что такое нагрузка на ФС, можно услышать? =)

ну поидее что я файл постоянно дёргаю нодой. Конечно имеет место быть так не делать. Но а с другой стороны так же тот же инклюд ты же тоже файл дёргаешь. Ну в идеале да снижать такие обращения. Ну в целом всё зависит ещё от винтов на ssd это как то легче переноситься чем на sata и sas. Впринципе для этого sdd и хорош.
VELIK505
inpost
Ну что я скажу.
Положил в редис:
$redis = new Redis();
$redis->connect('localhost:6379');
$redis->set('board', $json_data);

нода в редис ломиться теперь.
Нагрузка упала в 5 раз!
killer8080
VELIK505
а файл держать на tmpfs не пробовал?
VELIK505
killer8080
файлик именно нет но до этого я пробывал у нас папка сессии mod-tmp забивалась я попробывал 3 варианта куда писать сессии:
1 в tmpsf
2 в redis
3 в memcached
при большом обьёмё сколько их есть у нас memcached показал себя как самый лучший результат + он многопоточный -t 8 и сделал чанки в нём для ускорения производительности. уже полгода как в мемкеше сессии никаких потерь никаких издержек и так работают по уникс сокету то получился побыстрее доступ к (юзерским данным) к удалённому mysql-серверу.
Щас к редису подделаю подключение по сокету UNIXSOCK=/tmp/redis.sock
Zzepish
Вообще, насколько я знаю, в node.js можно отслеживать изменение файла (т.е. слушателем событий! если файл поменялся - можно его рекешировать в ОЗУ). Т.е. снизить нагрузку потенциально
inpost
VELIK505
Инклюд - тоже нагрузка.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.