ISPConfig 3 UI hanging when saving changes

Discussion in 'General' started by Paul Smith, Oct 6, 2022.

  1. Paul Smith

    Paul Smith New Member

    Ubuntu 20.04, PHP 7.4, ISPConfig 3.2.8p2, Nginx
    I've recently migrated (using the ISPConfig migrate tool) from Ubuntu 16.04 and a slightly older ISPConfig that was working fine.

    Now, when I make *some* changes to a site's configuration within ISPConfig, then the UI hangs with the 'loading' box for 30 seconds or so. The loading box then disappears, but no changes have actually been made (and the 'pending changes' counter does not appear). Some changes work fine.

    It only seems to happen if the data being submitted is 'big', eg if I try to save SSL certificates, or if there is a lot of data in the 'nginx Directives' box in the 'Options' tab.

    For instance, if I make a new site, it's fine, go to the 'Options' tab and put '#test' in the nginx directives box, that will save fine, but then if I put a comment in that is a few lines long, then it hangs.
    I've spent many hours trying to debug this, and am now stuck and despairing. To try and diagnose it, I put logging comments (using 'file_put_contents') in the 'sites/web_vhost_domain_edit.php' file - when the settings save, then the logging entries are logged so it looks as if they are working, but when the settings hang, then NOTHING is logged - even if I log the first line of the PHP file - it's as if the PHP script isn't even being started in that case. It's as if, if there is a certain amount of data being posted, then the PHP isn't running at all, but I can't see why that would be!

    The web browser reports that the connection was dropped, and the 'access.log' on the server shows a 408 (timeout) error. No relevant errors are logged in the Nginx 'errors.log' or the 'ispconfig.log'

    In case it helped, I've tried doing 'ispconfig_update.sh --force' and let it reconfigure everything. It made no difference. Also the server has been rebooted - no difference.

    I'm getting to the point where I'm going to set up another instance of the server, but I'm not keen on buying a second licence for the ISPConfig Migrate tool given that I'm only doing it because this instance is misbehaving badly.

    Other sites on the same server seem OK - eg I have a Wordpress blog running on the server (same version of PHP). I can create a long post in that with no problems whatsoever.

    Any ideas of things to try?


    HTF_Report.TXT output
    Code:
    ##### SERVER #####
    IP-address (as per hostname): ***.***.***.***
    [WARN] could not determine server's ip address by ifconfig
    [INFO] OS version is Ubuntu 20.04.5 LTS
    
    [INFO] uptime:  22:40:38 up  1:58,  5 users,  load average: 0.18, 0.12, 0.09
    
    [INFO] memory:
                  total        used        free      shared  buff/cache   available
    Mem:          7.7Gi       2.4Gi       3.1Gi       175Mi       2.2Gi       4.8Gi
    Swap:         4.0Gi          0B       4.0Gi
    
    [INFO] systemd failed services status:
      UNIT                      LOAD   ACTIVE SUB    DESCRIPTION
    ● snap.lxd.activate.service loaded failed failed Service for snap application lxd.activate
    
    LOAD   = Reflects whether the unit definition was properly loaded.
    ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
    SUB    = The low-level unit activation state, values depend on unit type.
    
    1 loaded units listed.
    
    [INFO] ISPConfig is installed.
    
    ##### ISPCONFIG #####
    ISPConfig version is 3.2.8p2
    
    
    ##### VERSION CHECK #####
    
    [INFO] php (cli) version is 7.4.32
    [INFO] php-cgi (used for cgi php in default vhost!) is version 7.4.32
    
    ##### PORT CHECK #####
    
    
    ##### MAIL SERVER CHECK #####
    
    
    ##### RUNNING SERVER PROCESSES #####
    
    [INFO] I found the following web server(s):
            Unknown process (nginx:) (PID 18666)
    [INFO] I found the following mail server(s):
            Postfix (PID 11001)
    [INFO] I found the following pop3 server(s):
            Dovecot (PID 11069)
    [INFO] I found the following imap server(s):
            Dovecot (PID 11069)
    [INFO] I found the following ftp server(s):
            PureFTP (PID 11148)
    
    ##### LISTENING PORTS #####
    (only           ()
    Local           (Address)
    [localhost]:953         (11163/named)
    [anywhere]:25           (11001/master)
    [localhost]:9049                (815/php-fpm:)
    [anywhere]:443          (18666/nginx:)
    [anywhere]:4190         (11069/dovecot)
    [localhost]:9054                (815/php-fpm:)
    [anywhere]:993          (11069/dovecot)
    [anywhere]:1443         (18666/nginx:)
    [anywhere]:995          (11069/dovecot)
    [localhost]:10023               (1265/postgrey)[localhost]:10024               (11033/amavisd-new)
    [localhost]:10025               (11001/master)
    [localhost]:10026               (11033/amavisd-new)
    [localhost]:10027               (11001/master)
    [anywhere]:587          (11001/master)
    [localhost]:6379                (1016/redis-server)
    [localhost]:11211               (791/memcached)
    [localhost]:9038                (13893/php-fpm:)
    [anywhere]:110          (11069/dovecot)
    [anywhere]:143          (11069/dovecot)
    [anywhere]:111          (1/init)
    [anywhere]:80           (18666/nginx:)
    [anywhere]:8080         (18666/nginx:)
    [anywhere]:8081         (18666/nginx:)
    [anywhere]:465          (11001/master)
    [localhost]:9011                (13893/php-fpm:)
    [localhost]:9043                (804/php-fpm:)
    ***.***.***.***:53              (11163/named)
    [localhost]:53          (11163/named)
    [anywhere]:21           (11148/pure-ftpd)
    ***.***.***.***:53              (766/systemd-resolve)
    [localhost]:9014                (815/php-fpm:)
    [anywhere]:22           (924/sshd:)
    *:*:*:*::*:25           (11001/master)
    *:*:*:*::*:953          (11163/named)
    *:*:*:*::*:443          (18666/nginx:)
    *:*:*:*::*:4190         (11069/dovecot)
    *:*:*:*::*:993          (11069/dovecot)
    *:*:*:*::*:995          (11069/dovecot)
    *:*:*:*::*:10024                (11033/amavisd-new)
    *:*:*:*::*:10026                (11033/amavisd-new)
    *:*:*:*::*:3306         (10276/mysqld)
    *:*:*:*::*:587          (11001/master)
    *:*:*:*::*:6379         (1016/redis-server)
    [localhost]10           (11069/dovecot)
    [localhost]43           (11069/dovecot)
    [localhost]11           (1/init)
    *:*:*:*::*:80           (18666/nginx:)
    *:*:*:*::*:8080         (18666/nginx:)
    *:*:*:*::*:8081         (18666/nginx:)
    *:*:*:*::*:465          (11001/master)
    *:*:*:*::**:*:*:*::*53          (11163/named)
    *:*:*:*::*:53           (11163/named)
    *:*:*:*::*:21           (11148/pure-ftpd)
    *:*:*:*::*:22           (924/sshd:)
    
    
    
    
    ##### IPTABLES #####
    Chain INPUT (policy DROP)
    target     prot opt source               destination
    ufw-before-logging-input  all  --  [anywhere]/0            [anywhere]/0
    ufw-before-input  all  --  [anywhere]/0            [anywhere]/0
    ufw-after-input  all  --  [anywhere]/0            [anywhere]/0
    ufw-after-logging-input  all  --  [anywhere]/0            [anywhere]/0
    ufw-reject-input  all  --  [anywhere]/0            [anywhere]/0
    ufw-track-input  all  --  [anywhere]/0            [anywhere]/0
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination
    ufw-before-logging-forward  all  --  [anywhere]/0            [anywhere]/0
    ufw-before-forward  all  --  [anywhere]/0            [anywhere]/0
    ufw-after-forward  all  --  [anywhere]/0            [anywhere]/0
    ufw-after-logging-forward  all  --  [anywhere]/0            [anywhere]/0
    ufw-reject-forward  all  --  [anywhere]/0            [anywhere]/0
    ufw-track-forward  all  --  [anywhere]/0            [anywhere]/0
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    ufw-before-logging-output  all  --  [anywhere]/0            [anywhere]/0
    ufw-before-output  all  --  [anywhere]/0            [anywhere]/0
    ufw-after-output  all  --  [anywhere]/0            [anywhere]/0
    ufw-after-logging-output  all  --  [anywhere]/0            [anywhere]/0
    ufw-reject-output  all  --  [anywhere]/0            [anywhere]/0
    ufw-track-output  all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-after-forward (1 references)
    target     prot opt source               destination
    
    Chain ufw-after-input (1 references)
    target     prot opt source               destination
    ufw-skip-to-policy-input  udp  --  [anywhere]/0            [anywhere]/0            udp dpt:137
    ufw-skip-to-policy-input  udp  --  [anywhere]/0            [anywhere]/0            udp dpt:138
    ufw-skip-to-policy-input  tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:139
    ufw-skip-to-policy-input  tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:445
    ufw-skip-to-policy-input  udp  --  [anywhere]/0            [anywhere]/0            udp dpt:67
    ufw-skip-to-policy-input  udp  --  [anywhere]/0            [anywhere]/0            udp dpt:68
    ufw-skip-to-policy-input  all  --  [anywhere]/0            [anywhere]/0            ADDRTYPE match dst-type BROADCAST
    
    Chain ufw-after-logging-forward (1 references)
    target     prot opt source               destination
    LOG        all  --  [anywhere]/0            [anywhere]/0            limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
    
    Chain ufw-after-logging-input (1 references)
    target     prot opt source               destination
    LOG        all  --  [anywhere]/0            [anywhere]/0            limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
    
    Chain ufw-after-logging-output (1 references)
    target     prot opt source               destination
    
    Chain ufw-after-output (1 references)
    target     prot opt source               destination
    
    Chain ufw-before-forward (1 references)
    target     prot opt source               destination
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0            ctstate RELATED,ESTABLISHED
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 3
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 11
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 12
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 8
    ufw-user-forward  all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-before-input (1 references)
    target     prot opt source               destination
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0            ctstate RELATED,ESTABLISHED
    ufw-logging-deny  all  --  [anywhere]/0            [anywhere]/0            ctstate INVALID
    DROP       all  --  [anywhere]/0            [anywhere]/0            ctstate INVALID
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 3
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 11
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 12
    ACCEPT     icmp --  [anywhere]/0            [anywhere]/0            icmptype 8
    ACCEPT     udp  --  [anywhere]/0            [anywhere]/0            udp spt:67 dpt:68
    ufw-not-local  all  --  [anywhere]/0            [anywhere]/0
    ACCEPT     udp  --  [anywhere]/0            ***.***.***.***          udp dpt:5353
    ACCEPT     udp  --  [anywhere]/0            ***.***.***.***      udp dpt:1900
    ufw-user-input  all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-before-logging-forward (1 references)
    target     prot opt source               destination
    
    Chain ufw-before-logging-input (1 references)
    target     prot opt source               destination
    
    Chain ufw-before-logging-output (1 references)
    target     prot opt source               destination
    
    Chain ufw-before-output (1 references)
    target     prot opt source               destination
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0            ctstate RELATED,ESTABLISHED
    ufw-user-output  all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-logging-allow (0 references)
    target     prot opt source               destination
    LOG        all  --  [anywhere]/0            [anywhere]/0            limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW ALLOW] "
    
    Chain ufw-logging-deny (2 references)
    target     prot opt source               destination
    RETURN     all  --  [anywhere]/0            [anywhere]/0            ctstate INVALID limit: avg 3/min burst 10
    LOG        all  --  [anywhere]/0            [anywhere]/0            limit: avg 3/min burst 10 LOG flags 0 level 4 prefix "[UFW BLOCK] "
    
    Chain ufw-not-local (1 references)
    target     prot opt source               destination
    RETURN     all  --  [anywhere]/0            [anywhere]/0            ADDRTYPE match dst-type LOCAL
    RETURN     all  --  [anywhere]/0            [anywhere]/0            ADDRTYPE match dst-type MULTICAST
    RETURN     all  --  [anywhere]/0            [anywhere]/0            ADDRTYPE match dst-type BROADCAST
    ufw-logging-deny  all  --  [anywhere]/0            [anywhere]/0            limit: avg 3/min burst 10
    DROP       all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-reject-forward (1 references)
    target     prot opt source               destination
    
    Chain ufw-reject-input (1 references)
    target     prot opt source               destination
    
    Chain ufw-reject-output (1 references)
    target     prot opt source               destination
    
    Chain ufw-skip-to-policy-forward (0 references)
    target     prot opt source               destination
    DROP       all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-skip-to-policy-input (7 references)
    target     prot opt source               destination
    DROP       all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-skip-to-policy-output (0 references)
    target     prot opt source               destination
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-track-forward (1 references)
    target     prot opt source               destination
    
    Chain ufw-track-input (1 references)
    target     prot opt source               destination
    
    Chain ufw-track-output (1 references)
    target     prot opt source               destination
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            ctstate NEW
    ACCEPT     udp  --  [anywhere]/0            [anywhere]/0            ctstate NEW
    
    Chain ufw-user-forward (1 references)
    target     prot opt source               destination
    
    Chain ufw-user-input (1 references)
    target     prot opt source               destination
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:21
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:22
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:25
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:53
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:80
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:110
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:143
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:443
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:465
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:587
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:993
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:995
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:3306
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:4190
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:8080
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            tcp dpt:8081
    ACCEPT     tcp  --  [anywhere]/0            [anywhere]/0            multiport dports 40110:40210
    ACCEPT     udp  --  [anywhere]/0            [anywhere]/0            udp dpt:53
    ACCEPT     tcp  --  ***.***.***.***/24     [anywhere]/0            tcp dpt:3306
    ACCEPT     tcp  --  ***.***.***.***/24     [anywhere]/0            tcp dpt:3306
    
    Chain ufw-user-limit (0 references)
    target     prot opt source               destination
    LOG        all  --  [anywhere]/0            [anywhere]/0            limit: avg 3/min burst 5 LOG flags 0 level 4 prefix "[UFW LIMIT BLOCK] "
    REJECT     all  --  [anywhere]/0            [anywhere]/0            reject-with icmp-port-unreachable
    
    Chain ufw-user-limit-accept (0 references)
    target     prot opt source               destination
    ACCEPT     all  --  [anywhere]/0            [anywhere]/0
    
    Chain ufw-user-logging-forward (0 references)
    target     prot opt source               destination
    
    Chain ufw-user-logging-input (0 references)
    target     prot opt source               destination
    
    Chain ufw-user-logging-output (0 references)
    target     prot opt source               destination
    
    Chain ufw-user-output (1 references)
    target     prot opt source               destination
    
    
    
    
    ##### LET'S ENCRYPT #####
    acme.sh is installed in /root/.acme.sh/acme.sh
    
    
    
     
  2. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    It is possible the ISPConfig installation is broken, but no need to purchase another Migration Tool licence.
    from https://www.ispconfig.org/add-ons/ispconfig-migration-tool/
    You seem to have read the Read Before -article, but did you follow the debugging instructions on why ISPConfig is not writing changes to disk?
    The common issues -script show snap service is failing. It is worth fixing, although I do not now what it does.
     
  3. Paul Smith

    Paul Smith New Member

    Ah. I obviously misread it. I remember reading that I could use it on one source server multiple times. I'm not sure where I got that from..

    Yes. That is debugging why changes aren't written to the database once they're in the job queue. In my problem, they're not even getting to the job queue. The ISPConfig logging doesn't contain anything when it hangs. (As mentioned, it looks as if the PHP scripts aren't even being run - as if the PHP-FPM installation is broken, but just for the ispconfig site - every other PHP7.4 site on the same server seems to work fine)

    As I understand it, Snap is for 'prebuilt apps'. I'm not entirely sure how it's different from the standard apt repository and I've never used it. I can't see that it's relevant for this problem. But, just in case, I've reinstalled snap and it's now running OK - but it has made no difference.
     
  4. till

    till Super Moderator Staff Member ISPConfig Developer

    The problem is that something with your php installation is wrong, PHP fails in a way that it is not able to even log or show an error. The problem indeed is that it is very complicated to fix it if you don't get a hint of what fails in php. maybe try to run:

    /usr/local/ispconfig/server/server.sh

    as root user, do you get any error? It's a small chance that the same issues pos up in server script, but worth a try.

    And double check that php-fpm default is really php 7.4 and not 8.x.
     
  5. Paul Smith

    Paul Smith New Member

    Yes, that is what I suspect, but it works *most* of the time.

    Indeedy
    I don't think there's anything useful there
    Code:
    root@ispserver5:/etc/pure-ftpd/conf# /usr/local/ispconfig/server/server.sh
    06.10.2022-10:32 - DEBUG [plugins.inc:155] - Calling function 'check_phpini_changes' from plugin 'webserver_plugin' raised by action 'server_plugins_loaded'.
    06.10.2022-10:32 - DEBUG [server:217] - Remove Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock
    finished server.php.
    
    I've put a little PHP script with just 'phpinfo()' in the ISPConfig web UI folder and accessed it through the port 8080 HTTP server, and that says it's PHP 7.4.32, so (unless I'm badly mistaken) that same PHP should be being used for the rest of the ISPConfig web UI (See attached screenshot)

    I'm working up to building a fresh instance of ISPConfig and test this particular problem right from the start so that if it happens again, I'll maybe know what triggered it.
     

    Attached Files:

  6. Paul Smith

    Paul Smith New Member

    OK. This is infuriating.
    I created a fresh instance yesterday using the auto-install scripts. Migrated everything to it. Everything worked fine.
    But now, it's started behaving exactly the same again. It was working earlier today, but now it's stopped, and I don't know what caused it.
     
  7. Paul Smith

    Paul Smith New Member

    OK. Now that's weird. This morning they're back working again. I set it migrating from Instance 3 to a new Instance 4 and went to bed. Come back in the morning to do further tests on Instance 4, and now Instance 2 and Instance 3 are both working correctly again (as well as Instance 4)

    If the FPM server was 'overloaded' would that cause the problem I'm having? Is there any way to check that?
     

Share This Page