Jump to content

Wilton Ergon

uniGUI Subscriber
  • Posts

    626
  • Joined

  • Last visited

  • Days Won

    21

Posts posted by Wilton Ergon

  1. I transferred my system to another datacenter, the freezing of windows stopped, it was a problem on the host servers I was using.

    in the new datacenter, sometimes I have a high cpu load reaching 100% of use, but windows do not crash,

    I am still doing countless reviews on my project, because I have a great structure, and the high use of CPUs worries me a lot.

    I have 5 cloud servers with 16 gb and 6 colors each, plus a database server with 128 gb memory, and I do the load balancer between servers with nginx, this should be enough for at least 2 thousand simultaneous users, and i am trying high cpu load with 30% of that amount.

  2. Your project is very interesting, it adds a lot of value to the unigui, you can be sure that we will acquire a license soon ..

     

    I particularly think that the responsiveness feature that Farshard has already promised us, could be the way you did it, in which case he could create the specific properties for that, so as not to use hint as a configuration mechanism.

    e sim, sou seu vizinho aqui do tocantins..

     

  3. On 13/02/2021 at 11:27, erich.wanker said:

    olá .. pergunta curta - e eu sei que não é possível responder .. mas espero que alguém possa dar uma estimativa 🙂

    QUANTOS USUÁRIOS PODEM TRABALHAR (criar, editar, atualizar e excluir registros) simultaneamente em tal hardware

    Hardware:

     

     

    Programas:

    • Windows Sever 2019
    • Servidor Apache
    • Exe UniGui (via Hyperserver.dll) com tamanho de 30 MB
    • Conexão a um banco de dados MySQL (local) com 30 tabelas á 20 campos / com ZeosLib no MainModule
    • o aplicativo usa muitos uniDGBrids / forms com uniDBEdit / ... tem 20 formulários e 20 frames
    • ...

     

     

    there are a multitude of factors that can influence this calculation.

    some suggestions:

    if you open your forms in tabs, avoid leaving too many tabs open, I limit it to a maximum of 4, when the user opens to 5, I remove it to 1,

    avoid opening your queries with select * from table

    open your forms without data, and offer a search feature, and limit the return on that search.

    avoid using sequeced timer enabled.

    avoid using forms, use frames instead.

    avoid leaving the system open indefinitely, set a time limit to end the application without use.

    my application has about 350 forms and consumes an average of 15 mb per user.

    having more memory, and more processor, does not mean that you can add new users in the same proportion, you can reach the limit of the operating system, even if you do not use all available memory and processor.

    if you have a large capacity server, it is better to create virtual machines on that server, than to use only a large server.

    • Like 2
  4. var IDLE_TIMEOUT = 600; // 10 minuts
    var _idleSecondsCounter = 0;
    document.onclick = function() {
        _idleSecondsCounter = 0;
    };
    document.onmousemove = function() {
        _idleSecondsCounter = 0;
    };
    document.onkeypress = function() {
        _idleSecondsCounter = 0;
    };
    window.setInterval(CheckIdleTime, 1000);

    function CheckIdleTime() {
        _idleSecondsCounter++;
        var oPanel = document.getElementById("SecondsUntilExpire");
        if (oPanel)
            oPanel.innerHTML = (IDLE_TIMEOUT - _idleSecondsCounter) + "";
        if (_idleSecondsCounter >= IDLE_TIMEOUT) {
            ajaxRequest(FrmPrincipal.form, '_idle_timeout', []);    ///-> *****
        }
    }
     

    **** 

    I was not referring correctly to the form. putting the correct name, performed correctly.

    procedure TFrmPrincipal.UniFormAjaxEvent(Sender: TComponent; EventName: string;
      Params: TUniStrings);
    begin
      if EventName = '_idle_timeout' then
      begin
        uniGUIApplication.UniSession.Terminate('Sua conexão foi encerrada por inatividade de mais de 10 minutos');
      end;

    end;

     

    this event does not fire at the login screen, I put the same code there too, but with just 1 minute (enough time for the user to enter the password),
    this prevents the system from being open on the login screen indefinitely

     

    • Like 1
  5.  

    You are using a hyperserver, and each client has its own website, the configured ports are in conflict, with that one client ends up opening the session of the other.

    • Upvote 1
  6.  


    there are dozens of topics on the forum talking about it, but none that I've tried works.
    my timeout is working properly, and ends application in 10 minutes of inactivity, I would just like to display a warning to the user when the inactivity timeout occurs.
    already tried to approach this link without success.

    in the script, I tried to change mainmodulo by frmprincipal (because it is the name of my main form.

    when the time limit is reached, when the user clicks on something, he goes back to login, the user thinks that the connection has fallen due to system failure. and I need to warn him that it is due to the time he spent without using the system.

    I also tried to use the mainmodule sessiontimeout event, but it is not fired.

    procedure TUniMainModule.UniGUIMainModuleSessionTimeout(ASession: TObject;
      var ExtendTimeOut: Integer);
    begin
      showmessage('Tempo expirado',nil);
    end;

    unigui 1.90.0.1526

     

    sessiontimeout 600000 in servermodule

    hyperserver

    [node_recycling]
    enabled=1
    recycle_after_secs=3600
    recycle_after_sessions=0
    recycle_after_idle_secs=700
    recycle_when_empty=1

  7. in the task manager, you can tell me, how many processes and identifiers are being shown on your server, because I have a server with 32 gb ram and 8 colors, and even with low memory and processor usage, the server ends up crashing, due to large amount of processes.

  8. thanks for your answer.

    with your answer, I understood that it’s not a good idea to have so many sites running on the same server with hs,
    having only one website and setting max_nodes = 50 would be smarter.


    I made the adjustment now, and I will monitor.

  9. unigui 1.90.1526

    delphi 10.3

    sdac connection with sql server web


    I have had freezes on my server, and the only thing I noticed was the high number of processes being executed when this occurs.

    my scenario, has a load balancer with nginx, and 3 servers with unigui.

    I have about 90 sites on each of the servers, with a hyperserver, and since each site can load up to 10 instances of my system, this can generate up to 900 instances running at the same time.

    even with low cpu and memory usage, the server simply freezes,

    having only 1 site for all clients with hyperserver, in that case would it be better ?, because it would have less executables running at the same time.

    or maybe this is another problem and it has nothing to do with it.

    see the printout of the last server crash.

     

    914091772_processosservidor4.png.a4344b2626349088e79e103775c9bd6c.png


  10. tsplus, uses the windows terminal service protocol, it actually makes a crack of the terminal service dlls. so the license is much cheaper than the windows own ts.

    see price comparison with other remote access solutions that have their own communication protocol, such as citrix and go-global.


  11. tsplus, requires purchase of license for your vcl application to be accessed remotely.

    weaknesses:
    on the same server you can have 100x or more, more unigui users, than using tsplus

    complicated printing, depends on printer installation on the server.

    license cost.

    your system even accessing through a url in the browser, it cannot be called a web system.

    if you are already migrating to unigui, it makes no sense to keep your vcl project active. keep everything in one place.

  12. I found the amount of novice users on the forum strange, giving good recommendations from the radcore, such recommendations would be less strange if they came from old users of the community, this is looking like some robots created by the creator of the radcore to speak well of himself.

    I hope I'm wrong about that doubt.

  13. yes, the correct one and as already explained, 
    and you create a new connection independent of your database, 
    make the connection at the beginning, and at the end disconnect.

        UniThreadTimer1.enabled :=false;
        try
           db :=tfdconnection.create(self);
           db.... you parameters connection load ini ....
           db.open;
           db.execsql('your DELETE....');
        finally
           begin
            db.close; 
            Freeandnil(db);
            UniThreadTimer1.enabled :=true;
           end;
        end;

  14.  

    I have 2 folders with the project, in the create of the servicemodule, I capture an ini key to allow changing the name of the service. I can install the 2 services via command prompt as an administrator by typing taskreportserver_s / install when I go to the list of windows services, and I try to start, it does not start .. starts only when the name property is not changed


  15. I have a project that needs to be started as a service on different doors,
    each will have its separate installation folder.
    and the same project that needs to be started 2 times.

    tried to set in create uniservicemodule
    the name property

    procedure TUniServiceModule.UniGUIServiceCreate(Sender: TObject);
    var s:string;
    begin
    s :=LerNoIni2('CONFIG','NOME DO SERVICO');
    displayname:='TaskReport Service'+s;
    NAME       :='UniServiceModule'+s;
    end;

     

    image.thumb.png.6d0b5cc26b8b2b63eb53147cd2f7d52c.png

     


    The service is installed but does not start.

    only starts when the service name is not changed
    that is
    When
    s: = LerNoIni2 ('CONFIG', 'SERVICE NAME');
    it's empty

     

     

     

  16. when running an application on your phone, in chrome there is a menu where you can make the browser behave like the computer, the usability is much better using this feature, there is some javascript code that can enable this browser feature by unigui, because that way I could put a button on my main form to adjust this setting

    303426048_versaoforpc.thumb.jpeg.1328bb6add8d3e288c3a0d4767d956d7.jpeg


  17. you have to use a report tool, which generates this pdf on the server, such as report builder, fastreport and others.

    if your user changes the text in a richtext component, and then you generate the report, you will have a problem, because unigui does not have a native component that works with richtext, it only has an html editor

  18. you have to handle the decoupling of routines well, you can easily share functions in .pas files between several unigui projects, just be careful with references to objects from other forms, pass everything by parameter, including the connection object. the idea of working with dll can even be valid, the problem is that for each dll a new connection to the database will be made.

  19. when you say 'it hasn't been fixed yet' it looks like you, or some user of yours discovered it a long time ago, it makes it look like you're using an illegal copy of the software.

    in all my projects, and I remove the edges of the forms, and use a custom close button, so I never had this problem

    • Like 1
    • Upvote 1
×
×
  • Create New...