Jump to content

hyperserver multi server large number users


Wilton Ergon

Recommended Posts

my infra

serv bd 20 cores with 40 logical processors 128 ram ssd with 120 databases sql server 2019.  lan adapter 1 GB full

5 servers for  app, with 32 ram 8 cores  disk ssd

connections usinng sdac

unigui 1.9.552

 

Everything was going well in the range of 1400 users, this end of the year we had a peak of users reaching 2700. With that started loss of connections, slow access, even with all servers with low cpu, disk, memory usage, I use just one site, where all users connect using the same address

it seems to me that the hyperserver is still not well-optimized to receive a large load of users, even if you have an excellent infrastructure.

I also use the bank server as an application server, but with only 5 nodes, and on the other servers there are 30 nodes.

the hyperserver infrastructure has to be reviewed with great criteria and care, because from what I understand, reaching a very large number of users, eg 10k, does not depend only on the physical part

 

image.png.aad2404dfcef986529915d79c1369976.png

as can be seen, I had no peaks in cpu usage that reached 100%

image.png.389ae4207e63be36e0874715bac39d9e.png

 

image.png.31f2bbd84be7b3a05769d78c816e7687.png

 

 

 

 

 

  • Like 1
Link to comment
Share on other sites

19 minutes ago, Farshad Mohajeri said:

Mais perguntas:

1) Você tem um temporizador contínuo em seu aplicativo? Se sim, qual é o intervalo?

2) Você tem um único servidor de banco de dados para todas as sessões?

no continuous timer.

yes, only 1 server.

on login, I identify the database, and direct the customer to its respective database.

today my server has about 130 banks. with 120gb ram disk ssd, which has from 1gb to 18gb

dedicated server with 2 processors, sql server standart 2019 limited a 80gb memory
I frequently monitor the health of the databases, and my database server never uses 100% cpu or memory, I don't have time-consuming queries, I'm very careful about this

 

I use timers, but in no form it is activated continuously, I always turn it off as soon as it runs.
I always use it with these print settings, changing only the range property

image.png.130d6505bad7ab7e0e791651a5b4e642.png

 

I haven't noticed any problem with the bank server being slow yet, when the problem occurred yesterday with users not being able to maintain the connection, the bank server had about 10% cpu usage, and with low disk usage as well.

it would be very good for you to clarify for everyone, how the hyperserver works behind the scenes, when a user connects to the master server and is redirected to a slave server, from that moment on, all requests will always go through the master? the exchange of this information?, if it is necessary to put 20 slave machines, will the master server manage the entire computer park? how far does it work?

 

 

 

 

 

Link to comment
Share on other sites

I'm thinking about activating a sdac feature, which allows working with the disconnected database, that way it keeps open queries in cache, and closes the connection with the database, similar to what would happen if I used a rest api. this can help reduce the number of simultaneous connections to the database server, but for that I need to make some adjustments to the application, as this feature does not work using temporary tables created in sql server. but this is still far from reaching the limit of sql server connections that supports up to 32 thousand active connections...

Link to comment
Share on other sites

  • Administrators
12 hours ago, wilton_rad said:

I'm thinking about activating a sdac feature, which allows working with the disconnected database, that way it keeps open queries in cache, and closes the connection with the database, similar to what would happen if I used a rest api. this can help reduce the number of simultaneous connections to the database server, but for that I need to make some adjustments to the application, as this feature does not work using temporary tables created in sql server. but this is still far from reaching the limit of sql server connections that supports up to 32 thousand active connections...

Have you enabled Pooling on your DB connections.

Link to comment
Share on other sites

16 hours ago, wilton_rad said:

it would be very good for you to clarify for everyone, how the hyperserver works behind the scenes, when a user connects to the master server and is redirected to a slave server, from that moment on, all requests will always go through the master? the exchange of this information?, if it is necessary to put 20 slave machines, will the master server manage the entire computer park? how far does it work?

 

Yes, I also need to understand how full traffic is managed; if it's redirect to slave servers or if ALL go always throught the master (that bears all the load).
Thanks

Link to comment
Share on other sites

I turned on connection pooling, I'm now working with a database in disconnected mode, this greatly reduced the active connections with the database, even with more than 3000 users, it doesn't get 200 active connections. from what I realized the problem is not in the connection with the database, but with the initial load of the application, there has nothing to do with the database. the hyperserver doesn't seem to be able to handle this amount of simultaneous connections, see that at this moment with 3359 users, the bank servers are using low cpu

image.png

Link to comment
Share on other sites

29 minutes ago, wilton_rad said:
ativei o pooling na conexão, estou trabalhando agora com uma base de dados em modo desconectado, isso reduziu muito as conexões ativas com o banco, mesmo com mais de 3000 usuários, nao fica 200 conexões ativas. pelo que percebi o problema nao esta na conexao com o banco de dados, e sim com a carga inicial do aplicativo, ali nao tem nada a ver com banco de dados. o hyperserver parece que nao consegue lidar com essa quantidade de conexoes simultaneas, veja que nesse momento com 3359 usuarios, os servidores de banco esta com baixo uso de cpu

image.png

 

And with Build 1556  ?

Link to comment
Share on other sites

  • Administrators

Hello,

Server Farm comes with three different operation modes.

  1. Pass Through
  2. Direct
  3. Url Redirect

Mode 1) Pass Through

(Implemented)

In "Pass Through" mode all requests passes through the master HyperServer. This includes all file requests. Which means your master server can become quite busy when there is a momentary high load. In this mode each slave HyperServer instance communicates with its own Nodes privately. Slaves and related Nodes are isolated from the public access.

It is the slowest mode, but the easiest for uniGUI developers to implement, manage and maintain.

Mode 2) Direct

(Not implemented)

In this mode again all traffic is handled by the master HyperServer, but it will directly communicates with all Nodes from other HyperServer instances. This will improve performance, as the traffic are not relayed through the middle HyperServers.

Mode 3) Url Redirect

(Not implemented)

In this mode each new session is redirected to one of the slave HyperServers. It will be done at URL level, so once the session is redirected, the master HyperServer will not handle the related traffic. For each slave HyperServer Node the traffic is handled directly by that HyperServer.

This is the fastest operation mode, but this requires you to open all of your salves to the internet and assign them public URLs.

 

 

  • Like 1
  • Upvote 1
Link to comment
Share on other sites

2 hours ago, Farshad Mohajeri said:

Hello,

Server Farm comes with three different operation modes.

  1. Pass Through
  2. Direct
  3. Url Redirect

Mode 1) Pass Through

(Implemented)

In "Pass Through" mode all requests passes through the master HyperServer. This includes all file requests. Which means your master server can become quite busy when there is a momentary high load. In this mode each slave HyperServer instance communicates with its own Nodes privately. Slaves and related Nodes are isolated from the public access.

It is the slowest mode, but the easiest for uniGUI developers to implement, manage and maintain.

Mode 2) Direct

(Not implemented)

In this mode again all traffic is handled by the master HyperServer, but it will directly communicates with all Nodes from other HyperServer instances. This will improve performance, as the traffic are not relayed through the middle HyperServers.

Mode 3) Url Redirect

(Not implemented)

In this mode each new session is redirected to one of the slave HyperServers. It will be done at URL level, so once the session is redirected, the master HyperServer will not handle the related traffic. For each slave HyperServer Node the traffic is handled directly by that HyperServer.

This is the fastest operation mode, but this requires you to open all of your salves to the internet and assign them public URLs.

 

 

 

Any time plan for mode 2 & 3?

Also please update the roadmap.🙏

Link to comment
Share on other sites

Thanks Farshad.
Mode 3 is required for heavy load applications. And I assume that the master Hyperserver can be on a server with few resources...
Mode 2 (and 1) for standard installations with hidden servers.

So Mode 3 will allow for a really high number of connections by scaling the number of servers, I think.
Thanks.

Link to comment
Share on other sites

as they say here in my country, I'm in a tight spot, this end of the year I had a high load of connections, as I said, I did what I could at the application level, activating pooling, keeping the bank disconnected, and by far I have performance issues in the database. my problem is precisely in the part of the day (early) where simultaneous connections start, hundreds of users coming in at the same time, and the hyper server (master) cannot handle this demand, and many users cannot open the system, that is it doesn't even load the login screen, the connection to the bank is only made after entering the login data, so there is no problem in the database,
after a few hours, where the peak of users has already reached about 3500, then it starts to normalize, in the already implemented mode, it is not serving me...
what should i do in this case?

this generates a huge complaint, as most users cannot access the system, as if the server had a problem...

improve the performance of the master server can solve?

have another machine dedicated only to the master server, as the current one is being shared with the bank server.
but this is a machine with 2 processors with 40 cores, with the latest generation xeon processor, very fast ssd disks...

I don't see difficulties in using mode 3, but I imagine that this redirect must be done with some passing of a parameter or token in the url, to prevent the user from connecting directly to a slave server, saving this url.
ex:

mysystem.mycompany.com.br

mysystem_serv1.mycompany.com.br

I would have the sites on each server

and the master server would redirect based on loads...

there would have to be a way to prevent the user from connecting directly using the url
mysystem_serv1.mycompany.com.br


dear Farshar, I saw that a new version of unigui was released with some new features, it would not be the case to complete what has already been started in relation to the hyperserver

alternating between unigui changes and very complicated

an implementation of a new feature starts, it is not finished, and it starts doing other things.

 

 

remark: my expectation and to have at least about 50000 simultaneous users, I will need dozens of server then?

Link to comment
Share on other sites

On 12/22/2021 at 5:04 AM, Farshad Mohajeri said:

Hello,

Server Farm comes with three different operation modes.

  1. Pass Through
  2. Direct
  3. Url Redirect

Mode 1) Pass Through

(Implemented)

In "Pass Through" mode all requests passes through the master HyperServer. This includes all file requests. Which means your master server can become quite busy when there is a momentary high load. In this mode each slave HyperServer instance communicates with its own Nodes privately. Slaves and related Nodes are isolated from the public access.

It is the slowest mode, but the easiest for uniGUI developers to implement, manage and maintain.

Mode 2) Direct

(Not implemented)

In this mode again all traffic is handled by the master HyperServer, but it will directly communicates with all Nodes from other HyperServer instances. This will improve performance, as the traffic are not relayed through the middle HyperServers.

Mode 3) Url Redirect

(Not implemented)

In this mode each new session is redirected to one of the slave HyperServers. It will be done at URL level, so once the session is redirected, the master HyperServer will not handle the related traffic. For each slave HyperServer Node the traffic is handled directly by that HyperServer.

This is the fastest operation mode, but this requires you to open all of your salves to the internet and assign them public URLs.

 

 

as I understand it, mode 3 would be the simplest for you and your team to create the resource in unigui, maybe if you had done a poll showing users how the hyperserver would work, what modes of operation it could have, and which mode it should be given priority, in my view mode 3 would certainly be elected as priority, as all developers look for performance, no matter if it's more complex to configure, as I imagine most users didn't even imagine the hyperserver could have other means of use. as it was never mentioned, at least I never saw anything about what you mentioned just now.

 

  • Upvote 1
Link to comment
Share on other sites

1 hour ago, wilton_rad said:

 

as I understand it, mode 3 would be the simplest for you and your team to create the resource in unigui, maybe if you had done a poll showing users how the hyperserver would work, what modes of operation it could have, and which mode it should be given priority, in my view mode 3 would certainly be elected as priority, as all developers look for performance, no matter if it's more complex to configure, as I imagine most users didn't even imagine the hyperserver could have other means of use. as it was never mentioned, at least I never saw anything about what you mentioned just now.

 

Hello

We are currently working on Mode 3. We will publish it soon.

  • Like 4
  • Happy 1
Link to comment
Share on other sites

Oh come on guys. 😩
Use Apache reverse proxy with load balancing.

https://duckduckgo.com/?q=apache+reverse+proxy+with+load+balance&t=newext&atb=v253-1&ia=web

It works. Simple and usefully. Leave the Hyperserver as it is. The 3rd option what you prefer is a security nightmare!

The uniGUI has more important issues which are still waiting to fix them. I don't want to link the thread where the subscribers complain about the quality of support.

Link to comment
Share on other sites

I know there is a way to configure the DNS to do some sort of round robin algoritm.

That means that mysystem.mycompany.com.br  would point to 2 or more external IP adresses.

You coud configure 2 master hiperservers ( + all slaves and notes replicated ) to respond each on it's routable IP adress and split the load

from the main master hiperserver.

You could reconnect all session later at the DB level. 

It's a crises solution, not very nice and in the mean time either implement Apache revers proxi or wait for Fershad to work his magic.

 

Link to comment
Share on other sites

On 29/12/2021 at 04:39, Franco Grech said:

Oh vamos lá rapazes. 😩
Use o proxy reverso Apache com balanceamento de carga.

https://duckduckgo.com/?q=apache+reverse+proxy+with+load+balance&t=newext&atb=v253-1&ia=web

Funciona. Simples e útil. Deixe o Hyperserver como está. A 3ª opção que você prefere é um pesadelo de segurança !

O uniGUI tem problemas mais importantes que ainda estão esperando para corrigi-los. Não quero vincular o tópico em que os assinantes reclamam da qualidade do suporte .

I already used nginx linux version to load balancer, but the balancing algorithm is not based on unigui open sessions, this caused some servers to be more overloaded than others and when a server was unavailable, it still tried to send the request to the same server, and it is likely that it has not been configured well. but what I realized is that the hyperserver balances more evenly, but in current mode, there is still an overhead when many users are connecting at the same time.

what is the security issue in mode 3 being created? the unigui team could enlighten us about this.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...