BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> TCP сокет,лагване на Порт., Проблем с препълване на памет на порт
devilxp1
Публикувано на: 25-06-2021, 22:32
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 11
Регистриран на: 25.06.21



Здравейте.
Имам следния проблем.
Направих си на едно сървърче, TCP сокет базирана платформа за комуникация между отделни устройства(клиенти),пращащи пакет от данни на всеки 30 секунди към сървъра.
Устройството отваря сокет конекция от страна на клиента.Клиента праща 200 байта и затваря.
Всичко работеше добре до към 100-я клиент.После започна да се забявя прочитането на данните ,защото започна да се образува опашка на порта.Тоест, едновременно 100-те устройства на 30-стата секунда пращат свойте 200 байта към порта на сървъра и това води до задръстване на порта.

Въпросът ми е, има ли сървърния порт памет(буферна),която да увелича по някакъв начин,за да предотвратя загубата на информация.Сървърът е Линукс базиран.
Или методология за подобряване работата на множество едновременно работещи сокет връзки.
Благодаря.
PMEmail Poster
Top
thrawn
Публикувано на: 26-06-2021, 06:17
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3119
Регистриран на: 17.01.17



Обработката на конекциите паралелна ли е?
PMEmail Poster
Top
devilxp1
Публикувано на: 26-06-2021, 06:59
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 11
Регистриран на: 25.06.21



Да.Паралелна е.
PMEmail Poster
Top
thrawn
Публикувано на: 26-06-2021, 07:35
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3119
Регистриран на: 17.01.17



Така както го описваш звучи странно. Портовете не са дупки та да имат някаква физическа пропускливост. Те са просто идентификатор който се ползва за да се определи кое приложение ще обработи пакетът. Демек, при паралелна обработка забавянето трябва да е само във времето нужно за стартиране на клиентската нишка/процес.
От тук и първото нещо което трябва да провериш - как стартираш паралелната обработка. Ако ползваш някакъв пул, може той да създава проблемите (вместо да ги решава) като кара клиентите да чакат за да се освободи нишка която да се използва повторно.
Друго което може да прави проблем е употребата на синхронен контекст споделен между паралелните задачи (връзка с база данни например).

Също така, трябва да имаш в предвид, че в един момент заявките могат да скочат доста над възможностите я на мрежата, я на машината и ще се наложи да ползваш някакъв трафик баланс и втори/трети... сървър (макар, че при 100 заявки ми изглежда малко вероятно това да е проблемът). Но все пак провери на машината да няма някакъв ddos филтър който да те реже.

Между другото, за какъв език говорим?

Това мнение е било редактирано от thrawn на 26-06-2021, 07:36
PMEmail Poster
Top
devilxp1
Публикувано на: 26-06-2021, 08:22
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 11
Регистриран на: 25.06.21



Да,имам база данни.
Всеки пакет който пристига от дадено устройство се запаметява дирекно в базата данни.
И от там ,после извличам необходимите ми данни за визуализация.
Езикът е php.

Бих бил благодарен за някакво семпло решение във вид на php код,за паралелна работа на множество tcp сокет връзки.

П.П Администратора на хостинга ми каза,че по принцип портовете имали някаква памет.Не знам може и да греша.

Това мнение е било редактирано от devilxp1 на 26-06-2021, 08:25
PMEmail Poster
Top
akrachev
Публикувано на: 26-06-2021, 08:32
Quote Post



Име: акрачев
Група: Потребител
Ранг: Почетен член

Мнения: 961
Регистриран на: 27.11.09



Аз бих опитал с NodeJS ...


--------------------
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 26-06-2021, 09:21
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 11829
Регистриран на: 27.01.05



QUOTE
някакво семпло решение във вид на php код,за паралелна работа на множество tcp сокет връзки.

Паралелната обработка е възможна само при повече от един процесор. Колко ядра може да ползваш на хостинга ти? icon_smile.gif

Това мнение е било редактирано от SuN на 26-06-2021, 09:23


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
devilxp1
Публикувано на: 26-06-2021, 09:43
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 11
Регистриран на: 25.06.21



Сървърът е на фирмата, към която работя.
Процесорът е 4 ядрен и админа ми каза,че мога да си го ползвам изцяло.
Диска е SSD ,а RAM-а е 16 GB.

Каза ми,че натоварване липсва при работа на скрипта.

Имам един пуснат процес на сървъра,който следи идва ли нещо на порта.Ако идва го записвам в Базата данни.
Отделно имам и php базирана визуализация на данните от Базата.

Но понеже съм лайк в сферата.Моля за някакъв примерен код на php ,за паралелна обработка на множество TCP сокет връзки.
Или семпъл код на php,как вие бихте подходили към такъв вид проект.
Благодаря.

Това мнение е било редактирано от devilxp1 на 26-06-2021, 09:56
PMEmail Poster
Top
rvc
Публикувано на: 26-06-2021, 17:52
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2571
Регистриран на: 13.05.11



сърявъра apache ли е или nginex?
ако е apache, може да тестваш как се държи на натоварване с командата ab.
виж документацията на самата команда и как да я стартираш за да тестваш сървъра.
според мен изобщо не обработваш паралелно конекциите, или сървъра има играничение (примерно 10) на нишките които може да създаде.

Това мнение е било редактирано от rvc на 26-06-2021, 17:53
PMEmail PosterUsers Website
Top
devilxp1
Публикувано на: 26-06-2021, 23:28
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 11
Регистриран на: 25.06.21



Ок.
Как да резбера има ли ограничение сървъра на нишките.
Апаче е сървъра.
Хъм за какъв тип паралелна работа говорим.
Ако говорим за паралелна работа на сокет връзките,мисля,че си работят паралелно.Там съм задал 10000 връзки.Ако говорим за паралелна работа ,на да кажем запис на данните в Базата,може и да не е паралелен процеса.

Моля за някакъв семпъл код ,за да мога да го сравня с моя и да видя в каква посока се движа.

Сайта ми има База данни,регистация на клиент,клиентски панел за наблюдение.
Данните дали постъпват на порта се следят от пуснат процес на сървъра.
В общи линии това е .
Метода на връзка е :
-Сървъра отваря сокет към клиента,той си праща пакета и сървъра затваря сокета.

Това мнение е било редактирано от devilxp1 на 26-06-2021, 23:30
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0