Hello everyone,

I running into some problems with a Cyrus Imap server. A year ago I
asked about sizing the server and it was defined as "overkill" (Dell
1850, Perc 4e/DC, 4 300GB 10krpm disks in Raid 10) for 300 users, but
now I'm suffering of really high loads and performance problems. I
think it's due I/O contention (more than a thousand t/s in iostat),
but don't know why Cyrus is so intensive in I/O that this hardware
can't handle it. Memory consumption is also very high.

When I started with ~60 users everything was ok, but after surpasing
the one hundred, performance problems arised. I added a imap proxy
which sited between the server and the webmail(Squirrel) and improved
overall performance, but now we have 215 users and the server has
severe problems during peak hours, when load can reach values of 12 or
more. Users perceive degraded response times.

Top usually lota of imap processes waiting for getblk, biowait, lockf,
or select. Vmstat also shows always proceses blocked waiting for I/O.

I had to tweak default kernel values because server crashed when
importing old mailboxes:
maxusers        64                      # estimated number of users
option NKMEMPAGES_MAX=65535
option BUFCACHEPERCENT=15

Cyrus was compiled from ports, with default options. The server is
running Sendmail and a lightly loaded openldap.

I don't know where to look at or what to tweak. Any ideas will be welcome.

Best regards.

Dmesg and other relevant data (non peak hours).

load averages: 10.36,  6.97,  5.79
                            17:59:50
259 processes: 258 idle, 1 on processor
CPU states:  3.7% user,  0.0% nice, 20.6% system,  1.9% interrupt, 73.8% idle
Memory: Real: 1135M/1702M act/tot  Free: 312M  Swap: 47M/2196M used/tot

  PID USERNAME PRI NICE  SIZE   RES STATE    WAIT     TIME    CPU COMMAND
 9503 _cyrus     2    0 2716K 4392K sleep    select   0:08  1.12% imapd
16618 _cyrus    -5    0 3976K 5728K sleep    biowai   0:08  1.03% imapd
14158 _cyrus     2    0 3544K 5568K sleep    select   0:01  0.68% imapd
23082 _cyrus    -5    0   11M   11M sleep    getblk   0:06  0.54% imapd
 4397 _cyrus     2    0 1664K 3396K sleep    select   0:00  0.54% imapd
  831 _cyrus    -5    0   14M   16M sleep    getblk   0:01  0.34% imapd
30096 _cyrus     2    0 6136K 7464K sleep    select   0:03  0.29% imapd
10307 _cyrus    -5    0 5572K 5908K sleep    getblk   0:00  0.29% imapd
28758 _cyrus    -5    0 7664K 9412K sleep    biowai   0:02  0.20% imapd
27091 _cyrus    -5    0   10M   12M sleep    getblk   0:02  0.20% imapd
15191 _cyrus     2    0 1740K 3664K sleep    select   0:00  0.20% imapd
17387 _cyrus     2    0 2216K 4056K sleep    select   0:02  0.15% imapd
25614 _cyrus     2    0 2056K 3952K sleep    select   0:02  0.15% imapd

# iostat 5 5
      tty            sd0             sd1             cd0
fd0             cpu
 tin tout  KB/t t/s MB/s   KB/t t/s MB/s   KB/t t/s MB/s   KB/t t/s
MB/s  us ni sy in id
   0    8 10.77  18 0.19  14.30 242 3.38   0.00   0 0.00   0.00   0
0.00  18  0  5  1 77
   0   54  9.93  34 0.33  15.00 956 14.00   0.00   0 0.00   0.00   0
0.00   3  0 13  0 84
   0   18 12.07  80 0.95  14.33 615 8.61   0.00   0 0.00   0.00   0
0.00   7  0 15  1 77
   0   18  8.68   9 0.08  14.03 575 7.88   0.00   0 0.00   0.00   0
0.00   1  0  6  1 92
   0   18 10.21  30 0.30  13.26 709 9.19   0.00   0 0.00   0.00   0
0.00   1  0  9  2 88

# vmstat 5 5
 procs   memory        page                    disks     traps         cpu
 r b w    avm    fre   flt  re  pi  po  fr  sr sd0 sd1  int   sys   cs us sy id
 7 2 01206040 321392  1719   0   0  11   0 174  12 430  573 4294967005
 446 18  6 77
 1 7 01200372 329816  7117   0   0   0   0   0  28 1497 1488  8354 1469 11 17 72
 0 2 01198584 331560  4741   0   0   0   0   0  15 1770 1390  5770 1202  3 14 83
 0 2 01189932 341820  2549   0   0   0   0   0  37 778  800  2981  592  2  8 90
 1 5 01196632 334756  5348   0   0   0   0   0  56 1622 1455  6145 1247  3 18 78


/etc/sysctl.conf :

kern.maxproc=1024
kern.maxfiles=8000
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535

# mount
/dev/sd0a on / type ffs (local)
/dev/sd0i on /home type ffs (local, nodev, softdep)
/dev/sd0d on /tmp type ffs (local, nodev, nosuid)
/dev/sd0f on /usr type ffs (local, nodev)
/dev/sd0e on /var type ffs (local, nodev, nosuid, softdep)
/dev/sd0h on /var/spool type ffs (local, noatime, nodev, nosuid, softdep)
/dev/sd1a on /das0 type ffs (local, noatime, nodev, nosuid, softdep)

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a      500M   99.9M    375M    21%    /
/dev/sd0i     50.7G   42.4G    5.8G    88%    /home
/dev/sd0d      124M   16.0K    117M     0%    /tmp
/dev/sd0f      7.9G    3.3G    4.2G    44%    /usr
/dev/sd0e      2.0G    344M    1.5G    18%    /var
/dev/sd0h      3.9G   55.7M    3.7G     1%    /var/spool
/dev/sd1a      550G   78.3G    444G    15%    /das0

# cat /etc/cyrus.conf
START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
  idled         cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap          cmd="imapd -U 30" listen="imap" prefork=10
#  imaps         cmd="imapd -s" listen="imaps" prefork=0
  pop3          cmd="pop3d" listen="pop3" prefork=1
#  pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
  sieve         cmd="timsieved" listen="sieve" prefork=1

  # these are only necessary if receiving/exporting usenet via NNTP
#  nntp         cmd="nntpd" listen="nntp" prefork=0
#  nntps                cmd="nntpd -s" listen="nntps" prefork=0

  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  #lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=1
maxchild=40
  lmtpunix      cmd="lmtpd -a" listen="/var/imap/socket/lmtp"
prefork=5 maxchild=10

  # this is only necessary if using notifications
   notify       cmd="notifyd" listen="/var/imap/socket/notify"
proto="udp" prefork=1
}

EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression,
  # Sieve or NNTP
  delprune      cmd="cyr_expire -E 3" at=0400

  squatter cmd="squatter -s -r user" at=0100
  # this is only necessary if caching TLS sessions
  # tlsprune      cmd="tls_prune" at=0400
}



OpenBSD 3.9-stable (GENERIC) #3: Sat Aug 26 23:30:07 CEST 2006
    [EMAIL PROTECTED]:/usr/src/sys/arch/i386/compile/GENERIC
cpu0: Intel(R) Xeon(TM) CPU 3.20GHz ("GenuineIntel" 686-class) 3.20 GHz
cpu0: 
FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,CNXT-ID
real mem  = 2146807808 (2096492K)
avail mem = 1779486720 (1737780K)
using 4278 buffers containing 280363008 bytes (273792K) of memory
mainbus0 (root)
bios0 at mainbus0: AT/286+(00) BIOS, date 01/09/06, BIOS32 rev. 0 @ 0xffe90
pcibios0 at bios0: rev 2.1 @ 0xf0000/0x10000
pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xfb260/304 (17 entries)
pcibios0: PCI Interrupt Router at 000:31:0 ("Intel 82801EB/ER LPC" rev 0x00)
pcibios0: PCI bus #11 is the last bus
bios0: ROM list: 0xc0000/0xb000! 0xcb000/0x1000 0xcc000/0x1000
0xcd000/0x2200 0xcf800/0x2200 0xec000/0x4000!
ipmi0 at mainbus0: version 1.5 interface KCS iobase 0xca8/8 spacing 4
cpu0 at mainbus0
pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
pchb0 at pci0 dev 0 function 0 "Intel E7520 MCH" rev 0x09
ppb0 at pci0 dev 2 function 0 "Intel MCH PCIE" rev 0x09
pci1 at ppb0 bus 1
ppb1 at pci1 dev 0 function 0 "Intel IOP331 Channel 0" rev 0x06
pci2 at ppb1 bus 2
ami0 at pci2 dev 14 function 0 "Dell PERC 4e/Di" rev 0x06: irq 7 Dell 16c 32b
ami0: FW 521X, BIOS vH430, 256MB RAM
ami0: 1 channels, 0 FC loops, 1 logical drives
scsibus0 at ami0: 40 targets
sd0 at scsibus0 targ 0 lun 0: <AMI, Host drive #00, > SCSI2 0/direct fixed
sd0: 69880MB, 69880 cyl, 64 head, 32 sec, 512 bytes/sec, 143114240 sec total
scsibus1 at ami0: 16 targets
safte0 at scsibus1 targ 6 lun 0: <PE/PV, 1x2 SCSI BP, 1.0> SCSI2
3/processor fixed
ppb2 at pci1 dev 0 function 2 "Intel IOP331 Channel 1" rev 0x06
pci3 at ppb2 bus 3
ppb3 at pci0 dev 4 function 0 "Intel MCH PCIE" rev 0x09
pci4 at ppb3 bus 4
ppb4 at pci4 dev 0 function 0 "Intel IOP331 Channel 0" rev 0x07
pci5 at ppb4 bus 5
ami1 at pci5 dev 14 function 0 "Symbios Logic MegaRAID 320-2E" rev
0x07: irq 7 Dell 2 32b
ami1: FW 521X, BIOS vH430, 128MB RAM
ami1: 2 channels, 0 FC loops, 1 logical drives
scsibus2 at ami1: 40 targets
sd1 at scsibus2 targ 0 lun 0: <AMI, Host drive #00, > SCSI2 0/direct fixed
sd1: 572160MB, 572160 cyl, 64 head, 32 sec, 512 bytes/sec, 1171783680 sec total
scsibus3 at ami1: 16 targets
ses0 at scsibus3 targ 6 lun 0: <DELL, PV22XS, E.19> SCSI3 3/processor fixed
scsibus4 at ami1: 16 targets
ppb5 at pci4 dev 0 function 2 "Intel IOP331 Channel 1" rev 0x07
pci6 at ppb5 bus 6
ppb6 at pci0 dev 5 function 0 "Intel MCH PCIE" rev 0x09
pci7 at ppb6 bus 7
ppb7 at pci7 dev 0 function 0 "Intel PCIE-PCIE" rev 0x09
pci8 at ppb7 bus 8
em0 at pci8 dev 7 function 0 "Intel PRO/1000MT (82541GI)" rev 0x05:
irq 11, address 00:13:72:5c:87:e9
ppb8 at pci7 dev 0 function 2 "Intel PCIE-PCIE" rev 0x09
pci9 at ppb8 bus 9
em1 at pci9 dev 8 function 0 "Intel PRO/1000MT (82541GI)" rev 0x05:
irq 3, address 00:13:72:5c:87:ea
ppb9 at pci0 dev 6 function 0 "Intel MCH PCIE" rev 0x09
pci10 at ppb9 bus 10
uhci0 at pci0 dev 29 function 0 "Intel 82801EB/ER USB" rev 0x02: irq 11
usb0 at uhci0: USB revision 1.0
uhub0 at usb0
uhub0: Intel UHCI root hub, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1 at pci0 dev 29 function 1 "Intel 82801EB/ER USB" rev 0x02: irq 10
usb1 at uhci1: USB revision 1.0
uhub1 at usb1
uhub1: Intel UHCI root hub, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhci2 at pci0 dev 29 function 2 "Intel 82801EB/ER USB" rev 0x02: irq 7
usb2 at uhci2: USB revision 1.0
uhub2 at usb2
uhub2: Intel UHCI root hub, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
ehci0 at pci0 dev 29 function 7 "Intel 82801EB/ER USB2" rev 0x02: irq 5
usb3 at ehci0: USB revision 2.0
uhub3 at usb3
uhub3: Intel EHCI root hub, rev 2.00/1.00, addr 1
uhub3: 6 ports with 6 removable, self powered
ppb10 at pci0 dev 30 function 0 "Intel 82801BA AGP" rev 0xc2
pci11 at ppb10 bus 11
vga1 at pci11 dev 13 function 0 "ATI Radeon VE QY" rev 0x00
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
ichpcib0 at pci0 dev 31 function 0 "Intel 82801EB/ER LPC" rev 0x02
pciide0 at pci0 dev 31 function 1 "Intel 82801EB/ER IDE" rev 0x02:
DMA, channel 0 configured to compatibility, channel 1 configured to
compatibility
atapiscsi0 at pciide0 channel 0 drive 0
scsibus5 at atapiscsi0: 2 targets
cd0 at scsibus5 targ 0 lun 0: <TEAC, CD-ROM CD-224E-N, 3.AB> SCSI0
5/cdrom removable
cd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2
pciide0: channel 1 disabled (no drives)
isa0 at ichpcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pcppi0 at isa0 port 0x61
midi0 at pcppi0: <PC speaker>
spkr0 at pcppi0
npx0 at isa0 port 0xf0/16: using exception 16
pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
biomask ffe5 netmask ffed ttymask ffef
pctr: user-level cycle counter enabled
uhub4 at uhub3 port 3
uhub4: Dell product 0xa001, rev 2.00/0.00, addr 2
uhub4: 2 ports with 2 removable, self powered, multiple transaction translators
dkcsum: sd0 matches BIOS drive 0x80
dkcsum: sd1 matches BIOS drive 0x81
root on sd0a
rootdev=0x400 rrootdev=0xd00 rawdev=0xd02
WARNING: / was not properly unmounted
arplookup: unable to enter address for 192.168.10.229
arplookup: unable to enter address for 192.168.10.243
uvm_mapent_alloc: out of static map entries
uvm_mapent_alloc: out of static map entries
uvm_mapent_alloc: out of static map entries
uvm_mapent_alloc: out of static map entries

Reply via email to