On Thu, Dec 23, 2021 at 09:52:05AM +0100, natan <na...@epf.pl> wrote:

> W dniu 23.12.2021 o 01:53, raf pisze:
> > On Wed, Dec 22, 2021 at 11:25:10AM +0100, natan <na...@epf.pl> wrote:
> >
> >> W dniu 21.12.2021 o 18:15, Wietse Venema pisze:
> >> 10.x.x.10 - is gallera klaster wirth 3 nodes (and max_con set to 1500
> >> for any nodes)
> >>
> >> when I get this eror I check number of connections
> >>
> >> smtpd : 125
> >>
> >> smtp      inet  n       -       -       -       1       postscreen
> >> smtpd     pass  -       -       -       -       -       smtpd -o
> >> receive_override_options=no_address_mappings
> >>
> >> and total: amavis+lmtp-dovecot+smtpd-o
> >> receive_override_options=no_address_mappings : 335
> >> from: ps -e|grep smtpd |wc -l
> >>
> >>>> but:
> >>>> for local lmt port:10025 - 5 connection
> >>>> for incomming from amavis port: 10027- 132 connections
> >>>> smtpd - 60 connections (
> >>>> ps -e|grep smtpd - 196 connections
> >>> 1) You show two smtpd process counts. What we need are the
> >>> internet-related smtpd processes counts.
> >>>
> >>> 2) Network traffic is not constant. What we need are process counts
> >>> at the time that postscreen logs the warnings.
> >>>
> >>>>> 2) Your kernel cannot support the default_process_limit of 1200.
> >>>>> In that case a higher default_process_limit would not help. Instead,
> >>>>> kernel configuration or more memory (or both) would help.
> >>>> 5486 ?        Ss     6:05 /usr/lib/postfix/sbin/master
> >>>> cat /proc/5486/limits
> >>> Those are PER-PROCESS resource limits. I just verified that postscreen
> >>> does not run into the "Max open files" limit of 4096 as it tries
> >>> to hand off a connection, because that would result in an EMFILE
> >>> (Too many open files) kernel error code.
> >>>
> >>> Additionally there are SYSTEM-WIDE limits for how much the KERNEL
> >>> can handle. These are worth looking at when you're trying to handle
> >>> big traffic on a small (virtual) machine. 
> >>>
> >>>   Wietse
> >> How I check ?
> > Googling "linux system wide resource limits" shows a
> > lot of things including
> > https://www.tecmint.com/increase-set-open-file-limits-in-linux/
> > which mentions sysctl, /etc/sysctl.conf, ulimit, and
> > /etc/security/limits.conf.
> >
> > Then I realised that the problem is with process limits,
> > not open file limits, but the same methods apply.
> >
> > On my VM, the hard and soft process limits are 3681:
> >
> >   # ulimit -Hu
> >   3681
> >   # ulimit -Su
> >   3681
> >
> > Perhaps yours is less than that.
> >
> > To change it permanently, add something like the
> > following to /etc/security/limits.conf (or to a file in
> > /etc/security/limits.d/):
> >
> >   * hard nproc 4096
> >   * soft nproc 4096
> >
> > Note that this is assuming Linux, and assuming that your
> > server will be OK with increasing the process limit. That
> > might not be the case if it's a tiny VM being asked to
> > do too much. Good luck.
> >
> > cheers,
> > raf
> >
> Raf I have:
> #ulimit -Hu
> 257577
> # ulimit -Su
> 257577
> 
> 7343 ?        Rs    24:22 /usr/lib/postfix/sbin/master
> 
> # cat /proc/7343/limits
> Limit                     Soft Limit           Hard Limit          
> Units    
> Max cpu time              unlimited            unlimited           
> seconds  
> Max file size             unlimited            unlimited           
> bytes    
> Max data size             unlimited            unlimited           
> bytes    
> Max stack size            8388608              unlimited           
> bytes    
> Max core file size        0                    unlimited           
> bytes    
> Max resident set          unlimited            unlimited           
> bytes    
> Max processes             257577               257577              
> processes
> Max open files            4096                 4096                
> files    
> Max locked memory         65536                65536               
> bytes    
> Max address space         unlimited            unlimited           
> bytes    
> Max file locks            unlimited            unlimited           
> locks    
> Max pending signals       257577               257577              
> signals  
> Max msgqueue size         819200               819200              
> bytes    
> Max nice priority         0                    0                   
> Max realtime priority     0                    0                   
> Max realtime timeout      unlimited            unlimited           
> us       
> 
> this is real limits for /usr/lib/postfix/sbin/master
> --

That looks like it should be plenty of processes,
as long as the server can really support that many.

You could test it with something like this:

        #!/usr/bin/env perl
        use warnings;
        use strict;
        my $max_nprocs = 8000;
        my $i = 0;
        while ($i < $max_nprocs)
        {
                $i++;
                my $pid = fork();
                die "fork #$i failed: $!\n" unless defined $pid;
                sleep(10), exit(0) if $pid == 0;
        }
        print "$i forks succeeded\n";

For example, a VM here reports 7752 for ulimit -Su,
but the above script failed on the 3470th fork.

cheers,
raf

Reply via email to