actually suggestion below is a good idea

run

ps -axww (or top)

to list active processes this will give you some hints

top is better for overall memory

i also have a perl script that will show actual memory useage, free etc

utilities like this are handy to have

also i found i had to set in dovecot.conf

default_process_limit = 16384

also are you running debug ?

auth_debug = no
auth_debug_passwords = no

mail_debug = no

ie set debug to = yes?

might give more detail if this is really a dovecot issue.

other background processes can eat memory

I run mailscanner for example and someone every one in a while tries to crash it!

it recovers but lord knows



mem outputs :

# mem

SYSTEM MEMORY SUMMARY:
mem_used:           16GB [ 12%] Logically used memory
mem_avail:   +     111GB [ 87%] Logically available memory
-------------- ------------ ----------- ------
mem_total:   =     128GB [100%] Logically total memory

SYSTEM MEMORY INFORMATION:
mem_wire:           13GB [ 10%] Wired: disabled for paging out
mem_active:  +       0GB [  0%] Active: recently referenced
mem_inactive:+      71GB [ 57%] Inactive: recently not referenced
mem_cache:   +       0GB [  0%] Cached: almost avail. for allocation
mem_free:    +      40GB [ 32%] Free: fully available for allocation
mem_gap_vm:  +       0GB [  0%] Memory gap: UNKNOWN
-------------- ------------ ----------- ------
mem_all:     =     124GB [100%] Total real memory managed
mem_gap_sys: +       3GB        Memory gap: Kernel?!
-------------- ------------ -----------
mem_phys:    =     127GB        Total real memory available
mem_gap_hw:  +       0GB        Memory gap: Segment Mappings?!
-------------- ------------ -----------
mem_hw:      =     128GB        Total real memory installed


-----------------------------------------------------------------------
# cat /programs/common/mem
#!/usr/local/bin/perl
##
##  freebsd-memory -- List Total System Memory Usage
##  Copyright (c) 2003-2004 Ralf S. Engelschall <r...@engelschall.com>
##
##  Redistribution and use in source and binary forms, with or without
##  modification, are permitted provided that the following conditions
##  are met:
##  1. Redistributions of source code must retain the above copyright
##     notice, this list of conditions and the following disclaimer.
##  2. Redistributions in binary form must reproduce the above copyright
##     notice, this list of conditions and the following disclaimer in the
##     documentation and/or other materials provided with the distribution.
##
##  THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
##  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
##  ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
##  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
##  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
##  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
##  SUCH DAMAGE.
##

#   query the system through the generic sysctl(8) interface
#   (this does not require special priviledges)
my $sysctl = {};
my $sysctl_output = `/sbin/sysctl -a`;
foreach my $line (split(/\n/, $sysctl_output)) {
    if ($line =~ m/^([^:]+):\s+(.+)\s*$/s) {
        $sysctl->{$1} = $2;
    }
}

#   round the physical memory size to the next power of two which is
#   reasonable for memory cards. We do this by first determining the
#   guessed memory card size under the assumption that usual computer
#   hardware has an average of a maximally eight memory cards installed
#   and those are usually of equal size.
sub mem_rounded {
    my ($mem_size) = @_;
    my $chip_size  = 1;
    my $chip_guess = ($mem_size / 8) - 1;
    while ($chip_guess != 0) {
        $chip_guess >>= 1;
        $chip_size  <<= 1;
    }
    my $mem_round = (int($mem_size / $chip_size) + 1) * $chip_size;
    return $mem_round;
}

#   determine the individual known information
# NOTICE: forget hw.usermem, it is just (hw.physmem - vm.stats.vm.v_wire_count).
#   NOTICE: forget vm.stats.misc.zero_page_count, it is just the subset of
#           vm.stats.vm.v_free_count which is already pre-zeroed.
my $mem_hw        = &mem_rounded($sysctl->{"hw.physmem"});
my $mem_phys      = $sysctl->{"hw.physmem"};
my $mem_all = $sysctl->{"vm.stats.vm.v_page_count"} * $sysctl->{"hw.pagesize"}; my $mem_wire = $sysctl->{"vm.stats.vm.v_wire_count"} * $sysctl->{"hw.pagesize"}; my $mem_active = $sysctl->{"vm.stats.vm.v_active_count"} * $sysctl->{"hw.pagesize"}; my $mem_inactive = $sysctl->{"vm.stats.vm.v_inactive_count"} * $sysctl->{"hw.pagesize"}; my $mem_cache = $sysctl->{"vm.stats.vm.v_cache_count"} * $sysctl->{"hw.pagesize"}; my $mem_free = $sysctl->{"vm.stats.vm.v_free_count"} * $sysctl->{"hw.pagesize"};

#   determine the individual unknown information
my $mem_gap_vm = $mem_all - ($mem_wire + $mem_active + $mem_inactive + $mem_cache + $mem_free);
my $mem_gap_sys   = $mem_phys - $mem_all;
my $mem_gap_hw    = $mem_hw   - $mem_phys;

#   determine logical summary information
my $mem_total = $mem_hw;
my $mem_avail = $mem_inactive + $mem_cache + $mem_free;
my $mem_used  = $mem_total - $mem_avail;

#   information annotations
my $info = {
    "mem_wire"     => 'Wired: disabled for paging out',
    "mem_active"   => 'Active: recently referenced',
    "mem_inactive" => 'Inactive: recently not referenced',
    "mem_cache"    => 'Cached: almost avail. for allocation',
    "mem_free"     => 'Free: fully available for allocation',
    "mem_gap_vm"   => 'Memory gap: UNKNOWN',
    "mem_all"      => 'Total real memory managed',
    "mem_gap_sys"  => 'Memory gap: Kernel?!',
    "mem_phys"     => 'Total real memory available',
    "mem_gap_hw"   => 'Memory gap: Segment Mappings?!',
    "mem_hw"       => 'Total real memory installed',
    "mem_used"     => 'Logically used memory',
    "mem_avail"    => 'Logically available memory',
    "mem_total"    => 'Logically total memory',
};

#   print system results
printf("\n");

printf("SYSTEM MEMORY SUMMARY:\n");
printf("mem_used: %7dGB [%3d%%] %s\n", $mem_used / (1024*1024*1024), ($mem_used / $mem_total) * 100, $info->{"mem_used"}); printf("mem_avail: + %7dGB [%3d%%] %s\n", $mem_avail / (1024*1024*1024), ($mem_avail / $mem_total) * 100, $info->{"mem_avail"});
printf("-------------- ------------ ----------- ------\n");
printf("mem_total: = %7dGB [100%%] %s\n", $mem_total / (1024*1024*1024), $info->{"mem_total"});

printf("\n");

printf("SYSTEM MEMORY INFORMATION:\n");
printf("mem_wire: %7dGB [%3d%%] %s\n", $mem_wire / (1024*1024*1024), ($mem_wire / $mem_all) * 100, $info->{"mem_wire"}); printf("mem_active: + %7dGB [%3d%%] %s\n", $mem_active / (1024*1024*1024), ($mem_active / $mem_all) * 100, $info->{"mem_active"}); printf("mem_inactive:+ %7dGB [%3d%%] %s\n", $mem_inactive / (1024*1024*1024), ($mem_inactive / $mem_all) * 100, $info->{"mem_inactive"}); printf("mem_cache: + %7dGB [%3d%%] %s\n", $mem_cache / (1024*1024*1024), ($mem_cache / $mem_all) * 100, $info->{"mem_cache"}); printf("mem_free: + %7dGB [%3d%%] %s\n", $mem_free / (1024*1024*1024), ($mem_free / $mem_all) * 100, $info->{"mem_free"}); printf("mem_gap_vm: + %7dGB [%3d%%] %s\n", $mem_gap_vm / (1024*1024*1024), ($mem_gap_vm / $mem_all) * 100, $info->{"mem_gap_vm"});
printf("-------------- ------------ ----------- ------\n");
printf("mem_all: = %7dGB [100%%] %s\n", $mem_all / (1024*1024*1024), $info->{"mem_all"}); printf("mem_gap_sys: + %7dGB %s\n", $mem_gap_sys / (1024*1024*1024), $info->{"mem_gap_sys"});
printf("-------------- ------------ -----------\n");
printf("mem_phys: = %7dGB %s\n", $mem_phys / (1024*1024*1024), $info->{"mem_phys"}); printf("mem_gap_hw: + %7dGB %s\n", $mem_gap_hw / (1024*1024*1024), $info->{"mem_gap_hw"});
printf("-------------- ------------ -----------\n");
printf("mem_hw: = %7dGB %s\n", $mem_hw / (1024*1024*1024), $info->{"mem_hw"});

#   print logical results
------------------------------------------------------------------






top will display something like this ?

last pid: 85373; load averages: 0.71, 0.48, 0.38
       up 72+04:51:41  08:22:11
207 processes: 1 running, 206 sleeping
CPU:  1.5% user,  0.0% nice,  0.4% system,  0.0% interrupt, 98.0% idle
Mem: 336M Active, 71G Inact, 139M Laundry, 13G Wired, 770M Buf, 40G Free
ARC: 4319M Total, 1346M MFU, 501M MRU, 2368K Anon, 55M Header, 2414M Other
     383M Compressed, 1469M Uncompressed, 3.83:1 Ratio
Swap: 16G Total, 16G Free

PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 1986 pgsql 1 26 0 195M 46M select 14 426:27 11.47% postgres 83810 pgsql 1 27 0 200M 171M select 13 3:15 9.19% postgres
 1882 root        128  20    0    11M  3732K rpcsvc  15  29.7H   2.26% nfsd
1987 pgsql 1 20 0 195M 47M select 5 33:21 1.84% postgres 1985 root 34 21 0 141M 88M sigwai 14 72:22 1.32% named 1937 root 1 20 0 27M 15M select 15 491:36 0.90% python3.8 99555 root 1 20 0 28M 18M select 10 634:23 0.88% python3.8 1939 root 1 20 0 27M 15M select 1 939:47 0.87% python3.8 1988 pgsql 1 20 0 195M 47M select 7 6:58 0.28% postgres 1989 pgsql 1 20 0 195M 47M select 8 2:14 0.17% postgres 1964 pgsql 1 20 0 194M 164M select 9 10:02 0.08% postgres
85373 root          1  20    0    14M  3644K CPU0     0   0:00   0.07% top
3150 pgsql 1 20 0 195M 42M select 6 39:21 0.06% postgres

ps -axw or ps -axww or freebsd

# ps -axww
  PID TT  STAT          TIME COMMAND
    0  -  DLs     3788:48.94 [kernel]
    1  -  ILs        0:05.38 /sbin/init --
    2  -  DL         0:00.00 [crypto]
    3  -  DL         0:00.00 [crypto returns 0]
    4  -  DL         0:00.00 [crypto returns 1]
    5  -  DL         0:00.00 [crypto returns 2]
    6  -  DL         0:00.00 [crypto returns 3]
    7  -  DL         0:00.00 [crypto returns 4]
    8  -  DL         0:00.00 [crypto returns 5]
    9  -  DL         0:00.00 [crypto returns 6]
   10  -  DL         0:00.00 [audit]
   11  -  RNL  1629112:33.34 [idle]
   12  -  WL       180:00.70 [intr]
   13  -  DL       123:57.70 [geom]
   14  -  DL         0:00.00 [crypto returns 7]
   15  -  DL         0:00.00 [crypto returns 8]
   16  -  DL         0:00.00 [crypto returns 9]
   17  -  DL         0:00.00 [crypto returns 10]
   18  -  DL         0:00.00 [crypto returns 11]
   19  -  DL         0:00.00 [crypto returns 12]
   20  -  DL         0:00.00 [crypto returns 13]
   21  -  DL         0:00.00 [crypto returns 14]
   22  -  DL         0:00.00 [crypto returns 15]
   23  -  DL         0:00.00 [sequencer 00]
   24  -  DL         0:00.00 [cam]
   25  -  DL         5:42.32 [usb]
   26  -  DL         0:00.47 [soaiod1]
   27  -  DL         0:00.47 [soaiod2]
   28  -  DL         0:00.46 [soaiod3]
   29  -  DL         0:00.47 [soaiod4]
   30  -  DL      1714:58.15 [zfskern]
   31  -  DL         0:00.00 [sctp_iterator]
   32  -  DL        12:50.77 [pf purge]
   33  -  DL         2:16.82 [rand_harvestq]
   34  -  DL        29:00.62 [pagedaemon]
   35  -  DL         0:00.00 [vmdaemon]
   36  -  DL         5:25.68 [bufdaemon]
   37  -  DL         1:44.98 [vnlru]
   38  -  DL      2040:33.82 [syncer]
 1657  -  Is         0:01.21 /sbin/devd
 1863  -  Ss         0:03.44 /usr/sbin/rpcbind
 1878  -  Is         0:00.08 /usr/sbin/mountd -r -S
 1880  -  Is         0:00.27 nfsd: master (nfsd)
 1882  -  S       1780:23.16 nfsd: server (nfsd)
 1907  -  Ss        10:01.06 /usr/sbin/syslogd -s
 1909  -  Is         0:00.55 /usr/sbin/inetd -wW -C 50 -s 500
 1911  -  Is         0:00.25 /usr/sbin/sshd
 1955  -  Is        24:50.70 /usr/local/sbin/clamd
 1964  -  Ss        10:02.28 postmaster: checkpointer    (postgres)
 1965  -  Ss         1:38.52 postmaster: background writer    (postgres)
 1966  -  Ss         3:48.60 postmaster: walwriter    (postgres)
 1967  -  Ss         2:03.84 postmaster: autovacuum launcher    (postgres)
 1968  -  Ss        12:41.60 postmaster: stats collector    (postgres)
1969 - Is 0:01.82 postmaster: logical replication launcher (postgres) 1974 - Ss 37:19.26 postmaster: walsender pgsql 10.221.0.16(30421) (postgres) 1976 - Ss 39:37.29 postmaster: walsender pgsql 10.221.0.10(64872) (postgres)
 1985  -  Is        72:21.96 /usr/local/sbin/named -d 0 -4
1986 - Ss 426:29.15 postmaster: pgsql scom_billing 10.221.0.18(52852) (postgres) 1987 - Ss 33:21.50 postmaster: pgsql scom_billing 10.221.0.18(60830) (postgres) 1988 - Ss 6:57.70 postmaster: pgsql scom_billing 10.221.0.18(34255) (postgres) 1989 - Ss 2:13.52 postmaster: pgsql scom_billing 10.221.0.18(17265) (postgres)
 2073  -  Ss        10:12.46 /usr/local/libexec/postfix/master -w
 2076  -  I          0:07.82 qmgr -l -t fifo -u
 2166  -  Is         1:53.61 /usr/local/libexec/postfix/master -w
 2168  -  I          0:55.23 qmgr -l -t fifo -u
 2238  -  Is         1:49.77 /usr/local/libexec/postfix/master -w
 2240  -  I          1:01.17 qmgr -l -t fifo -u
 2253  -  I          0:39.34 tlsmgr -l -t unix -u
 2397  -  Is         0:05.58 MailScanner: starting child (perl)
 2513  -  Is         0:20.43 /usr/sbin/cron -s
3150 - Rs 39:21.01 postmaster: walsender pgsql 10.221.0.6(10000) (postgres) 3175 - Is 0:00.35 postmaster: pgsql scom_billing 10.221.0.6(10017) (postgres) 3176 - Is 0:10.80 postmaster: pgsql scom_billing 10.221.0.6(10018) (postgres) 3177 - Ss 1:10.22 postmaster: pgsql scom_billing 10.221.0.6(10019) (postgres)



Happy Saturday !!!
Thanks - paul

Paul Kudla


Scom.ca Internet Services <http://www.scom.ca>
004-1009 Byron Street South
Whitby, Ontario - Canada
L1N 4S3

Toronto 416.642.7266
Main 1.866.411.7266
Fax 1.888.892.7266
Email p...@scom.ca

On 6/4/2022 5:15 AM, dovecot-boun...@dovecot.org wrote:

On 2022-06-04 02:46, Ivan Jurišić wrote:
Ok a little more help :
vsz_limit = 0 --> means unlimited ram for allocation, change
this/try 2g etc pending avaliable ram.

I try with 524M, 1G, 2G, 4G and 8G but in any case repclicator proces
got crash.

Maybe there is another service process causing OOM? e.g. check clamd, antivirus DBs tend to be quite big and in updating for sometime becomes double the size due to reloading.

Also, somtimes httpd service when using event worker, and its not tuned properly, it will cause the OOM crash to other service along itself.

Good luck.

Zakaria.

Reply via email to