-
Posts
626 -
Joined
-
Last visited
-
Days Won
21
Content Type
Profiles
Forums
Events
Posts posted by Wilton Ergon
-
-
4 minutes ago, Farshad Mohajeri said:
Se você deseja evitar que o servidor mestre crie nós locais, apenas defina seu max_nodes = 0.
no, I need the master server to create sessions too
I will limit a maximum of 10 us
and the other servers I'll leave with 20because the master server has a good configuration, 24 colors 128 ram
in the initial tests, I'm trying to get at least the other servers working.
then I activate the master server to also start sessions -
there are 5 servers,
I already configured 3 -
the file exists, and yes I need the master server to also start sessions, but I couldn't do that, then I just tried to leave the master server without opening requisitions.
in that case should I install the hs service on the master server too?
-
-
I'm setting up a test address and managed to get access to 2 servers to work, but sometimes it displays an error stating that the executable file was not informed in the cgf file, this happens randomly
serv-bd (master)
gepweb_e.exe -> binary my app compiled version 1552
gepweb_d.dll -> dll hyperserver - version 1552
site configured in IIS
in my gepweb_d.cfg
[http_transport]
start_port=42200[server-0]
enabled=1
url=http://10.0.3.106:8077
name=SERV-APP1
token=saktid21092908074XXX[server-1]
enabled=1
url=http://10.0.4.13:8077
name=SERV-APP2
token=ffsigc21092908424XXXX
[hyper_server]
binary_name=GEPWEB_E.EXE
initial_nodes=2
max_nodes=5
max_sessions=0
sessions_per_nodes=0
prompt_login=1
persistent_node_zero=0
port=8077
url_path=
url_referer=
ext_root=[ext]\
uni_mobile_root=[unim]\
uni_root=[uni]\
uni_packages_root=[unipack]\
max_requests=500
detailed_log=0
server_title=serv-bd
antiflood_per_ip=0
server_root=
framework_files_root=
session_one_per_ip=0
server_build=1.90.0.1552
dont_create_backup=0
allow_remote_config=1-------------------------------
in serv-app1GEPWEB_D.CFG
content:
[transport]
pool_size=0
command_timeout=20000
request_timeout=300000
connect_timeout=20000
[http_transport]
start_port=43000[hyper_server]
binary_name=GEPWEB_E.EXE
initial_nodes=2
max_nodes=4
max_sessions=0
sessions_per_nodes=0
prompt_login=1
persistent_node_zero=0
port=8077
url_path=
url_referer=
ext_root=[ext]\
uni_mobile_root=[unim]\
uni_root=[uni]\
uni_packages_root=[unipack]\
max_requests=500
detailed_log=0
server_title=SERV-APP1
antiflood_per_ip=0
server_root=
framework_files_root=
session_one_per_ip=0
server_build=1.90.0.1552
http_max_pool=1000
max_connections=1000
dont_create_backup=0
allow_remote_config=1
GEPWEB_E.EXE -> exe may aplication compiled with version 1552
hyper_service.exe -> service hshyper_service.cfg -> cfg
content:
[transport]
pool_size=0
command_timeout=20000
request_timeout=300000
connect_timeout=20000[http_transport]
start_port=45000[hyper_server]
binary_name=GEPWEB_E.EXE
initial_nodes=2
max_nodes=4
max_sessions=0
sessions_per_nodes=0
prompt_login=1
persistent_node_zero=0
detailed_log=0
port=8077
url_path=
url_referer=
ext_root=[ext]\
uni_mobile_root=[unim]\
uni_root=[uni]\
server_root=
framework_files_root=
uni_packages_root=[unipack]\
max_requests=1000
http_max_pool=1000
max_connections=1000
antiflood_per_ip=0
session_one_per_ip=0
server_title=SERV-APP1
server_build=1.90.0.1552
dont_create_backup=0
allow_remote_config=1
token=saktid21092908074XXX ->copied and past to server masterinstall hs in prompt
hyper_service /install gep_testeI put this label on the login screen to know which server the system was loaded on, and it's correctly redirecting the system to the servers.
-
it's not that simple, due to unigui's architecture, requests must always be forwarded to the same server, otherwise, the session would be lost.
It's very simple to create a balancer with nginx windows version for a rest api, because each request can be forwarded to a different server, we don't have to worry about sessions, because they don't exist.I now use nginx linux version, as only this version has the ability to send requests based on the source ip, thus keeping sessions open from a unigui application
this generates a non-uniform balance, as it always ends up forwarding a user to the same server.
unigui's native balancer will solve this, because every time the user connects, he will be forwarded to a server with fewer users, not to mention that we will not depend on external solutions for this.
-
we know the complexity of this new version, there are many details to be seen, there is the documentation, examples, and even the adjustment for version 11 of delphi, everything goes well, because we trust in your work.
-
sorry, I hadn't seen it, I'm waiting ..
-
-
you must have a parameter in your application that indicates the time zone difference in relation to the server time, based on this difference, in every data inclusion for date fields you will have to add the current time (server) with this parameter, which can be negative or positive, and very likely that you will have to review all your forms, and where it is necessary to update dates..
another way would be through triggers in your database, which would make this adjustment automatically on inclusion or change.
you could create a generic function in delphi that fetches the date time and adds it to that parameter, and use this function in all fields that need to write date, or date + time
if the situation exists that your china customer traveled to the US, in this scenario, would your system have to adopt local time, or china time? if it's local time, then in that case you should use the javascript function that will capture the browser's local time...
- 1
-
in mainform, script paste this
var IDLE_TIMEOUT = 600; //10 min
var _idleSecondsCounter = 0;
document.onclick = function() {
_idleSecondsCounter = 0;
};
document.onmousemove = function() {
_idleSecondsCounter = 0;
};
document.onkeypress = function() {
_idleSecondsCounter = 0;
};
window.setInterval(CheckIdleTime, 5000); // 5 secondsfunction CheckIdleTime() {
_idleSecondsCounter++;
var oPanel = document.getElementById("SecondsUntilExpire");
if (oPanel)
oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
if (_idleSecondsCounter >= IDLE_TIMEOUT) {
ajaxRequest(FrmPrincipal.form, '_idle_timeout', []);
}
}in mainform events, onAjaxEvent
if EventName = '_idle_timeout' then
begin
uniGUIApplication.UniSession.Terminate('you message');
end;
this timer is running on the client side, without access to the server, and crashes the application after 600 seconds of no activity.
you can change this by changing the value of the variable
IDLE_TIMEOUT
if you want to do the same before logging in, you must do the same on the login screen -
- 1
-
I know, here comes this guy again, just to remember today is Thursday the week is ending...
- 2
-
the load division is calculated according to the maximum number of nodes that each server will go up, if this is proportional to the total nodes of all servers, this would be the calculation that each server would have to have active sessions, such as a stress test, I imagine that all sessions were loaded once and were active.
let us know the logic used for dividing this workload.and the way I did in this little spreadsheet?
-
23 hours ago, Farshad Mohajeri said:
I realized that the number of sessions are not with close amounts, that and why was defined a different weight for each server?
in the example of 5 servers
could have for example
1 receiving 10% of the load, and the others receiving 22.5%, we don't know if something in this sense was thought, but it would be good to define the weight that each server can receive. -
this is great, however, I have had cases where the application server was operating, but it was not connecting to the database server,
the hyperserver in this situation will open the application, but it in turn will not communicate with the bank, so the need to stop access to this server manually, this occurs, because my balancer is on another machine other than the bank server . -
on the hyperserver, will it be possible to remove one of the servers from the balance without having to stop all the others?, sometimes one of the servers has problems, or needs maintenance, and we need to remove it from the balance, but it would be good to do that, without have to take down the other servers.
-
plus a bunch of improvements that won't be missed.
-
2 hours ago, Stemon63 said:
Oi Wilton,
Tenho um aplicativo UNIGUI em execução que funciona muito bem. Com Mariadb ou Firebird como backend, (outro em andamento com PostgreSQL).
Sem problemas por anos, e UNIGUI é meu primeiro "santo no céu".
Esses são aplicativos da web que estão em nuvens, com no máximo 100-120 sessões simultâneas para cada um.
Só porque gosto, pretendo reescrever aplicativos mais importantes e complexos que são para um grande número de usuários, aplicativos que agora estão em Delphi VCL com Devexpress e que são servidos através de Remote Desktop. Nesse caso, o gerenciamento do número de usuários e recursos de largura de banda passa a ser estratégico.
Não devemos esquecer que para cada sessão de gerenciamento das operações é aberto um número consistente de tabelas (e não esqueçamos que uma das vantagens do Unigui é o gerenciamento das grades, caso contrário torna-se difícil recriar a abordagem do desktop).
Uma abordagem mais orientada para o cliente nos permitiria alimentar o armazenamento local e fechar a conexão e os conjuntos de dados, adiando as reconexões em caso de atualização, assim como a atualização em cache com o ApplyUpdate, com considerável economia de recursos e comunicação contínua com o servidor . porque a maioria das operações são feitas entretanto no cliente.
Em relação à segurança de dados, sei muito bem que uma abordagem diferente (como o núcleo Tmsweb ou outras ferramentas em javascript) obriga a enviar dados e estruturas em Json para o cliente, também expondo o endereço dos recursos, mas essa é a abordagem que geralmente usam todos os produtos da web orientados para o cliente que usam, por exemplo, serviços de descanso. Presumi evitar a abordagem SQL no cliente e usar os serviços Rest (embora eu prefira Json-rpc), modificando claramente a arquitetura com muito mais trabalho, o que possivelmente gostaria de evitar 🙂
A força do Unigui é ocultar todos os gerenciamento de dados no servidor, e "mascarar" com apelidos todos os dados enviados ao cliente.
Eu conheço essa vantagem muito bem 🙂I use this feature of the SDAC component, which keeps the connection closed, this considerably reduces the number of active connections in the sql server database, together, pooling is also used to keep the cache of these connections, the only problem is that you cannot use sql temporary tables in your application.
this does not reduce the back and forth from the client to the server, nor the use of memory, as the query data will be in the application server's memory, and the connection with the database is closed, right after opening.
in the case of transactions, it will remain open until the data is committed.
-
11 hours ago, Stemon63 said:
Hoje, esses servidores são usados para aplicativos de desktop remoto (DELPHI). O mesmo que ESPERO transformar com a UNIGUI nos próximos meses.
Os servidores têm 64 GB de RAM e 2 foreach de processador (6-8 núcleos).
Agora o balanceamento é feito pelo próprio software Remote Desktop. ESPERO usar novos recursos do HyperServer com UNIGUI.
Por isso preciso de DBgrids e datasets de clientes mais otimizados, para evitar "bate-papos" contínuos em grades de rolagem com servidor, isso não é problema com poucas sessões, mas o jogo muda se eu tiver milhares.
Nossos concorrentes possuem soluções web puras com infra-estrutura centrada no cliente e serviços de descanso com milhares de conexões e poucos recursos, solução mais próxima do núcleo web da Tms; Mas eu gosto e preciso do poder do UNIGUI, comunicações "relâmpago" e evitando conversas contínuas quando não são necessárias.
Tenho certeza de que Farshad tratará do assunto. Unigui ROCKS.I mean that you have known unigui for at least 10 years (when you entered the forum) but you still don't have anything running using unigui?
-
are you using the report builder? if so, there is an option that causes the pdf to be generated even if there is no data, this way the pdf will be created and read correctly.
-
really?
you joined the forum in 2016, and you are still testing unigui, man you are very indecisive.- 1
-
this is a restriction of the report builder, the generated pdf creates a url that does not open the link and a new page.
if you open the pdf in any other editor the same thing will happen.for this specific case, I suggest you generate a report in pure html, so you will have more control
you assemble the html, throw it into a tuniHTMLMemo
for print.
UniSession.AddJs(edHtml.jsname+'.iframeEl.dom.contentWindow.print();');
I use the report builder a lot, and for some cases I had to do it that way...
-
yes, he promised a lighter grid, where we can have more control, but don't expect it to be done before 2023
I've been avoiding using grids as much as possible, on screens that need to input a lot of data, so I've been creating my forms with just tuniscrolbox, and tuniedits
this simulates screen scrolling, and allows more control over each field.
server farm binary name cfg
in General
Posted
log serv-master
and app3
logapp3.rar log serv master.rar