|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
Не падающий сервер14.01.2015, 14:40. Показов 5636. Ответов 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 | |
|
Падающий снег
Падающий текст падающий квадрат
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|