Как стать автором
Обновить
163
0

Пользователь

Отправить сообщение
А по вашему мнению тут есть какой-то секрет? :)
> Насколько node-cluster надёжен?
В плане работы — надежен. Но у него глючный интерфейс cli() start/restart/shutdown. Иногда, при удаленном запуске (через capistrano) не убивает старые процессы, либо вообще ничего не делает. Если зайти на сервер напрямую, то все работает нормально. Все никак не могу с этим разобраться.
У node-cluster нет нативной демонизации, по сему пришлось писать обертку, которая форкает сама себя с setsid=true.

При работае со «stand-alone» (для Cloud процессов, которые не слушают http), пришлось допиливать graceful shutdown/restart.

Еще панисал плагин для node-cluster для слежения за памятью воркеров (если нужно, могу выложить).

> Пользовались ли чем-то другим кроме него (forever)?
Да, forever использую для демонизации Beseda (COMET), поскольку у него всего один процесс.
> Комментарий: Sync, безусловно жизненно необходим, хотя и уродлив.
Нотацию «someObject.someMethod.sync(someObject, arg1, arg2)» необходимо использовать только для вызова сторонних функций, которые не обернуты в ".async()". Свои же функции можно вызывать напрямую: gist.github.com/1159101 (getUserSummary_nodejs_sync.js)

> Как он, кстати, будет пробрасывать исключения?
Так же, как и Fiber — нативно.

> Вопрос: можете ли вы отказаться от nginx в этой ситуации?
Не могу. На нем много другой логики, которую очень не хочется доверять nodejs.

> Я бы ради кометов и вебсокетов не особо волнуясь поставил бы веб-сервер на erlang вместо nginx.
Я вообще скоро комет перепишу на Erlang :)

> Просто порт 4000 — всё таки штука стремная, отвалится у многих пользователей.
Пока не сталкивался, вроде у всех работает. А в чем может быть проблема?

> Насколько можно сервер на ноде втыкать вперед?
Не стоит. Nginx сейчас — как «guard», в котором я всегда уверен, который никогда не отвалится. Тем более, upstream позволяет в случае таймаута перебросить запрос на другой сервер. Он, как бы, сглаживает нестабильность nodejs.
Егор, давай на украинский переведем :)
По среднему LA всех серверов.
ulimit превысили… поднимаем еще серваки.
Ребята, сервера действительно падают под хабраэффектом.
Ограничиваем инвайты, чтоб хотя бы те кто зашли, смогли нормально попользоваться.
Выдаю по 50-100 инвайтов раз в 20 минут.
Выдал еще 200 инвайтов, разлетелись в считанные секунды.
Господа! Только что выдал 100 инвайтов. Ушло в 0 за 40 секунд.
Вот и хабраэффект. Работаем. Регистрация временно приостановлена.
Я собираюсь сделать в Киеве. Ищу единомышленников.
А отладка? На какой строке произошла ошибка?
А что в секции JS делает доклад «Новые возможности в MySQL 5.6»?
Уже писал, вообще-то. Ок, напишу еще раз.
Господа, как отредактировать описание своего доклада?
Мне нужно добавить одну строчечку :)
> либо сделать обертку с помощью Proxy из Harmony

Интересненько, что-то вроде:

var Sync = require('sync'),
    fs = Sync.proxy('fs');

Sync(function(){
    var source = fs.readFile(__filename, 'ascii');
})


> либо включить в свою библиотеку свои версии методов стандартных библиотек, которых, кстати, не много.

Это не особо спасет, потому что чаще всего имеешь дело именно с нестандартными библиотеками.
Это весьма полезно ;)
Поддерживаю.

1. node-sync
2. псевдо-синхронное программирование на nodejs с использованием fibers

console.log("begin");
setTimeout(function () {
	console.log("2000ms timeout");
	setTimeout(function () {
		console.log("1500ms timeout");
		setTimeout(function () {
			console.log("1000ms timeout");
			setTimeout(function () {
				console.log("final");
			}, 500);
		}, 1000);
	}, 1500);
}, 2000);
console.log("end");

Брюки превращается в:
var Sync = require('sync');
console.log("begin");

Sync(function(){
    Sync.sleep(2000);
    console.log('2000ms timeout');
    
    Sync.sleep(1500);
    console.log("1500ms timeout");

    Sync.sleep(1000);
    console.log("1000ms timeout");
   
    Sync.sleep(500);
    console.log("final");
})
Когда сядем за erlang?

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность