Cyrus, Solaris 10, ZFS? (and NIS?)

Dale Ghent daleg at umbc.edu
Thu Oct 5 16:32:45 EDT 2006


On Oct 5, 2006, at 1:59 PM, Elizabeth Schwartz wrote:

> >There's a bug in ZFS regarding performance problems when fsync'ing
> >file descriptors -- there's apparently going to be a patch coming
> >"real soon now" -- your options are:
>
> Thanks!
>
> Ugh, that would be bad news. Except, I think the delay is happening  
> earlier. The delay is between the A001 login and A001 ok, and the  
> only zfs file system is the mail spool (I should have spelled that  
> out)

Have you verified the contents of /etc/nsswitch.conf ? Have you tried  
pointing its ypservers at localhost (since you say this server is  
also a NIS slave)?  Also check the contents of /etc/nscd.conf on your  
old server and compare it to the new.

> I've been playing with the dtrace toolkit this afternoon - still a  
> bit stuck on how to get from my tcp port connection to the process  
> number to run dtrace dtruss (lsof *should* be the right tool but  
> I'm missing a step somewhere)

Do this:

To simplify, telnet to your imap server's imap port from a machine  
that otherwise has no connections to that server.

On the imap server, and assuming that your imapd processes run under  
a certain username such as "cyrus", run the following command,  
replacing the -u argument in pgrep with your imapd user and the IP  
address in the egrep portion with the IP address you are telnetting  
from:

    pfiles `pgrep -u cyrus imapd` | egrep '(imapd|xxx.xxx.xxx.xxx)'

You will then get output similar to the following:

25723:  imapd
26910:  imapd
25084:  imapd
27962:  imapd
         peername: AF_INET xxx.xxx.xxx.xxx  port: 50630
         peername: AF_INET xxx.xxx.xxx.xxx  port: 50630
         peername: AF_INET xxx.xxx.xxx.xxx  port: 50630
8772:   imapd

With the above, imapd PID 27962 is your process to debug your problem  
with.

Run 'pldd <PID> | grep libsasl2'  and not the full name of the  
libsasl2 library your imapd uses, such as "libsasl2.so.2.0.21" sans  
the preceding path (ie, leave off /usr/local/lib)

Download the Dtrace Toolkit (google for it) and run the dappprof  
program. Now run it against the imapd PID and only key in on the  
calls made by the SASL library:

dappprof -u libsasl2.so.2.0.21 -F -p <PID>

Over in your imapd telnet window, issue a login command (A001 LOGIN  
foo bar). After the login returns, hit Ctrl-C in dappprof and look at  
the times (which are in microseconds, so move the decimal place as  
you see fit to better understand the times).

Look for which function in SASL takes the longest to return.

/dale

--
Dale Ghent
UNIX Systems Specialist
UMBC - Office of Information Technology
ECS 201 - x51705





More information about the Info-cyrus mailing list