|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
Не падающий сервер14.01.2015, 14:40. Показов 5191. Ответов 84
Метки нет (Все метки)
Собираюсь писать сервер, который должен выдерживать ~100 запросов в секунду
Каждый запрос будет обращаться к бд раза 3-4, писать в файл и отдавать небольшой(пару строк) ответ. Писал однажды маленький чатик по технологии comet, когда скрипт висел в памяти, пока в бд не произойдет изменение. И получалось, если больше 2 человек пользовались этим чатом, то сайт падал. Он у меня был на бесплатном хосте radyx, но меня все равно это насторожило. Прошу объяснить технологию, как написать не падающий сервер. И несколько вопросов Возможно ли хранить массив в памяти, который будет доступен каждый раз, при выполнении скрипта? Что бы уменьшить количество обращений в бд. Какие примерно нужны параметры у хостинга, под мои запросы? и сколько такой хостинг может стоить? обращаться к серверу будут только из СПб. Есть ли смысл искать хостинг, расположенный в СПб, чтобы ускорить процесс доступа?
0
|
|
| 14.01.2015, 14:40 | |
|
Ответы с готовыми решениями:
84
падающий снег Падающий снег падающий мяч |
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 15:21 [ТС] | |
|
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||||||||||||||
| 16.01.2015, 15:26 | ||||||||||||||||||||||||
|
Не по теме:
Вот весь код отвечающий за запуск приложения и веб сервер
создаём обработчики
в клиенте хоть в мобилке хотьв бразуере надо просто сделать что то вроде
Добавлено через 56 секунд ![]() Добавлено через 44 секунды Не по теме: Нужно будет статейку набростаь ан эту тему на днях)
1
|
||||||||||||||||||||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 15:59 [ТС] | |
|
Я просто не понимаю, что такое node js, как он работает, никогда не сталкивался с ним)
Буду признателен, если расскажите
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||||||||||||||||||||
| 16.01.2015, 17:08 | |||||||||||||||||||||
Сообщение было отмечено KOPOJI как решение
Решение
http://nodejs.org/ качаете, устанавливаете, создаете папку, создаете файлик package.json
код сервера для примера, с коментами, извините но нет времени ещё подробней расписывать)) это должно показать суть общую, раскинете опфайлам, создадите модельки, и прикрутите бд)) если это чат, то можно хранить в ОЗУ, бзе проблем, добавляете просто строку в бд, на случай если нужна история, а последние 20 сообщений можно и в озу хранить. server.js Кликните здесь для просмотра всего текста
chat.html Кликните здесь для просмотра всего текста
порт нужно будет проксить через какой либо сервер на адрес сайта, типа http://site/chat что бы порт был 80 для браузера, что даст большую кросплатформенность)) например нгинкс подойдёт
2
|
|||||||||||||||||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 17:20 [ТС] | |
|
DrobyshevAlex,спасибо,но я не про это)
А про то,что вообще такое node js сервер. Это джава скрипт, который интепретируется на сервере? Добавлено через 37 секунд И чат - это был просто пример)
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||||||
| 16.01.2015, 17:31 | |||||||
|
http://ru.wikipedia.org/wiki/Node.js
что такое события, что можно отправить 1му событие или всем, что можно в любой момент подключиться к событию. а имена событий, и их внутренности обзывайте как хотите) я вам говорил что я делал нечто похожее на то что вам нужно. когда будете пистаь сервер, будет по другому код выглядеть наверное) например подключение отклчюение хендлеров я делал автоматически в зависмости от флага состояния юзера
0
|
|||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 17:45 [ТС] | |
|
И то верно)
Да читал я вики, не особо что-то понял) А верно, что socket.io можно использовать, если сервер не на nodr js. Т.е. эта библиотека просто предоставляет удобную кроссбраузерную работу из js?
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 18:08 | |
|
это библиотека написана на жс, етсь под клиента и под сервера.
но етсь под андроид и под иос сторонние, можете и сами написать свою на чём угодно. вся суть библиотек в том, что бы не писать велосипеды, а сосредоточиться на конечном продукте ![]() то есть если вам нужно не нод.жс, то вам нужно либо искать готовую серверную часть, либо писать самому. по сути это просто набок строк кода) естественно вы и на ассемблере можете серверную чатсь написать под неё ![]() Добавлено через 1 минуту Я ещё раз говорю, хорошо знаете Java? Пишите на нём Я предлагал это только потому тчо мне - под мои задачи это оказалось оптимальным решением, и я знал js что не составило труда написать на нод.жс ![]() Добавлено через 3 минуты Вот сейчас я пишу сервер под флеш игрушку, пишу не на ноде жс, потмоу что мне не нужен хттп и бразер, а флешка сама по себе с сокетами работает. В результате я сильно экономлю троафик отказавшить от жсон, хмл, хттп и прочих текстовых протоколов. А если мне нужно под хттп/вебсокеты я выбираю то что для этого задумывалось) то етсь в моем случае нод.жс. Смотрите на задачу и выбирайте инструмент. Но вот на чём я бы не стал писать так это на пхп, не потому что он плохой, а потому что у меня ассоциация пхп - простой скриптовый язык, не для создания серверных приложений, а для создания скриптов, для сайта
1
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 21:00 [ТС] | |
|
просто я подумываю сервер на яве сделать, а один из вариантов клиента на js, используя эту библиотеку ,т.е. коннектиться не на 80 порт, экономля трафик) это нормально?
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||||||
| 16.01.2015, 21:23 | ||||||||||||||||
|
Или я Вас не понимаю или Вы не до конца понимаете что делает бибилотека, и как происходит обмен данными в таких приложениях.
Конект на 80 порт не как не связан с количетсвом трафика, будь то 80, 1080, 10080 порт - это просто порт. По дефолту 80 используется для HTTP сервера. Что на каком конце висит зависит от Вас ![]() Под экономией трафика я имел ввиду то, что я не использую текстовый протокол. Простой пример, можно взять жсон и договорится что пакет ыбудут такими
Для примера, в жсон вызов метода с авторизацией примерно так может выглядеть
это не считая остального мусора, В бинарном же протоколе он будет выглядеть так,
Тут ни как номер порта не виляет ![]() так вот, как вы собираетесь уменьшить данные сменив номер порта я не понимаю. судя по тому что на клиенте вы хотите использовать сокет.ио вы не будите использовать свой протокол обмена данными, вам нужно обмениваться данными через вебсокеты, и реализовывать на стороне сервера правильный протокол, который используется в сокет.ио. можно написать сервер и делать два вида ответов, в зависимости от того, веб сокеты или мобильное приложение подключилось. Но я советую поизучать что такое протоколы, как происходит обмен данных, прежде чем начинать пистаь сервер, что бы потом всё не переделывать. Добавлено через 2 минуты ну да. там в жсон в данном примере сессион кей можно н считать, он будет слаться каждый раз только при лонг пулинге или аяксе, по веб сокетам 1 раз
0
|
||||||||||||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
||
| 16.01.2015, 21:24 [ТС] | ||
|
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 21:28 | |
|
вы хотите сокет ио только в браузере использовать? или и в мобильнике?
0
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 21:41 [ТС] | |
|
в браузере, конечно
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||
| 16.01.2015, 21:44 | ||
|
Я не принуждаю к использованию сокет.ио в мобильнике, просто почему такое решение категоричное?
0
|
||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 22:01 [ТС] | |
|
почему 2 то?)
в мобильнике те же сокеты, что и в браузере
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 22:10 | |
|
Не понял, что 2?
И что значит те же сокеты что и в браузере? В браузере с JS либо вообще нельзя использовать сокеты, либо веб сокеты, либо ещё что то, но не простые полноценные сокеты. А вот в мобильнике как раз полноценные сокеты. Так если вы считаете что в мобильнике те же сокеты что и в браузере, какой тогда вообще смысл пистаь что то свое под мобильник, если в браузере вы будите использовать сокет.ио? Ну вот отсюда и вопрос, почему вы не хотите оскет ио использовать в мобильнике?) Вот что получается, вы хотите в браузере использовать сокет ио Значит для сервера на Java вы будите реализовывать протокол взаимодействия с сокет.ио В мобильнике по вашим словам такие же сокеты как и в браузере, то етсь не полноценные... Получается что дальше у вас два пути: 1) в мобильнике писать протокол свой, тогда в сервере нужно делать два протокола, и в зависимости от клиента, использовать один или второй. 2) реализовать протокол такой же как в сервере вы сделали для браузера, тогда в сервере останется 1 протокол, что уменьшит количество кода и упростит сервер, но вы будите писать ту же библиотеку сокет.ио ![]() Если вы хотите использовать 1 путь, то почему? Что вы хотите улучшить в том протоколе что уже в сокет ио есть? Если второй, то тем более не понимаю, если оно написано, зачем писать то же самое?
0
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|||
| 16.01.2015, 22:21 [ТС] | |||
|
я думал что веб сокеты ( веб сокеты - это же сокет.ио?) являются полноценными
а в чем они не полноценны? Добавлено через 29 секунд вообще, я думал о 2 пути) Добавлено через 26 секунд вообще, мб встрою браузер в приложение и не буду париться вебкит всегда радовал Добавлено через 4 минуты тогда вообще получится, что не надо писать и под андроид и под айос, только приложение, где есть браузер Добавлено через 2 минуты
0
|
|||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 22:30 | |
|
soket.io - библиотека! просто для кросбраузерности.
она пытается использовать различный транспорт для соединения с сервером: websocket, flashsocket, htmlfile, xhr-polling... а сокет, это программный интерфейс, который позволяет данными обмениваться, есть различные слои сетевые... но как правило при использовании tcp сокета, вы пишите и читаете в него как и в обычный файл, ну почти вам нужно просто подключиться куда то и читать писать байты.web socket это протокол поверх tcp socket, поддерживаемый далеко не во всех браузерах слово полноценны не прям к веб сокетам нужно применять а к браузерам. то етсь не все браузере позволят это использовать. почитайте книжку по сетевому программированию, когда поймете что такое сокет, что такое tcp socket И что такое web socket, будет понятней что такое протокол, и что делает socket.io, и что я пытаюсь у вас узнать ![]() Хорошо, забудьте всё что я написал выше. Можно пару строк кода Java сервера, что бы понять что вы хотите делать? То есть как вы собираетесь слушать порт, какие сокеты использовать, в каком виде принимать и отправлять данные. Пример в одном потоке, просто создание слушающего сокета, и приём отправку имени юзера. Добавлено через 2 минуты spydark91, простите за не скромный вопрос? а нахрена тогда вообще приложение? ![]() Добавлено через 22 секунды Браузер и так в каждой мобилке, етсь, вы хотите написать прсото браузер?) Добавлено через 2 минуты Тогда опять же вернёмся к вопросу, почему Java?) если вы будиде под браузер пистаь на js значит вы его знаете, значит можете написать сервер на node.js что гораздо быстрей и проще, с учетом того что сокет.ио писалось именно под него. и я не думаю что ява более быстро работает или меньше жрёт памяти чем нод.жс, так почему Java?
1
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|||||||
| 16.01.2015, 22:41 [ТС] | |||||||
|
да я понимаю что сокет.ио это библиотека)
но думал, что веб сокеты во всех браузерах поддерживаются, и что это, по сути, тоже самое, что и простые сокеты, только в браузере. Да вот, простенький сервер.
пока что у меня вопросов больше нет, вы необычайно мне помогли, большое спасибо) Добавлено через 1 минуту конечно, надо познавать новое, но сейчас, как то не хочется node js изучать)
0
|
|||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||
| 16.01.2015, 22:53 | ||||||||||||
|
веб сокеты - это сокрее протокол.
который нужно реализовать ещё на стороне сревера. то что вы показали на сервере - обычный tcp сокет. который сам по себе будет принимать данные от веб сокетов как простой текст. https://ru.wikipedia.org/wiki/WebSocket Вам придёт что то типа
и нужно формировтаь ответы по тому же протоколу
Тот кусок что вы показали - с js не заработает, он просто набором байт будет принимать и отдовать, а самое весёлое что нет никакой гарантии сколько за 1 раз при чтении будет прочитано байт, то етсь вы можете за ра хи не получить все данные. Вы даже ен знаете соклько данных должно придти. К тому же нужно делать неблокирующие сокеты, что бы если 1 клиент с медленным интернетом, другие просто не зависли. Вам слишком рано начинать реализовывать свой протокол, или писать на tcp сокетах сервер для web сокетов. Но дело ваше, я например люблю учиться на поставленных перед собой задачах ![]() Успехов в написании ![]() Добавлено через 2 минуты Открою сикрет, у меня 2 знакомых программиста сетевых, который не 1 год этим занимаются, и даже они столкнулись с проблемой чтения. Ибо юди думают что они написали read, recv,... и всё, они прочти всё что нужно, но это не так)) не зря функция возвращает количество байт прочитанных... Добавлено через 57 секунд А вот если вы этого всего ен знаете, то вам выход самый простой использовать что то готовое, socket,io, tornado web,...
1
|
||||||||||||
| 16.01.2015, 22:53 | |
|
Падающий снег
Падающий текст падающий квадрат
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|