[Samba] Major samba load caused by re-reading of the configuration file
Jonathan Knight
jonathan at cs.keele.ac.uk
Tue Jul 2 02:54:03 GMT 2002
We're running samba-2.2.3a-6 from the redhat 7.3 distribution.
Periodically we see a massive load on our server which then quickly goes
away. I've spent some time trying to diagnose where the problem is and
it appears to be caused by every smb process on the machine (all 360 of
them) re-reading the config file at the same moment.
THe problem is I cannot see why this should happen and why it should
happen every few minutes. The config file remains static so it isn't
detecting a change there and as far as I can see there should be no
reason for the samba processes to work in sync which each other.
Before I delve into the code to try and find the problem I thought I'd
email and run it pass the list in case it has already been spotted and
fixed.
The effect can be seen from this sample of the strace output I
captured. I'll annoted what I can understand...
******** These SIGUSR1's seem to turn up regualarly so I assume
******** that they are normal and nothing to worry about.
--- SIGUSR1 (User defined signal 1) ---
write(21, "\1", 1) = 1
sigreturn() = ? (mask now [FPE USR2 PIPE])
read(20, "\1", 1) = 1
fcntl64(7, F_SETLKW64, {type=F_WRLCK, whence=SEEK_SET, start=604,
len=1}, 0xbffff430) = 0
fcntl64(7, F_SETLK64, {type=F_WRLCK, whence=SEEK_SET, start=14544,
len=1}, 0xbffff3d0) = 0
fcntl64(7, F_SETLK64, {type=F_UNLCK, whence=SEEK_SET, start=14544,
len=1}, 0xbffff3d0) = 0
fcntl64(7, F_SETLKW64, {type=F_WRLCK, whence=SEEK_SET, start=164,
len=1}, 0xbffff350) = 0
fcntl64(7, F_SETLKW64, {type=F_UNLCK, whence=SEEK_SET, start=164,
len=1}, 0xbffff360) = 0
fcntl64(7, F_SETLKW64, {type=F_UNLCK, whence=SEEK_SET, start=604,
len=1}, 0xbffff440) = 0
fcntl64(7, F_SETLKW64, {type=F_WRLCK, whence=SEEK_SET, start=604,
len=1}, 0xbffff430) = 0
fcntl64(7, F_SETLKW64, {type=F_UNLCK, whence=SEEK_SET, start=604,
len=1}, 0xbffff440) = 0
******** Here's where the problem lies. The select call has
******** timed out (this smb was idle so that's no surprise)
******** but why does it then go off and read its three config
******** files again?
select(21, [4 19 20], NULL, NULL, {60, 0}) = 0 (Timeout)
time(NULL) = 1025600343
time(NULL) = 1025600343
geteuid32() = 0
write(22, "[2002/07/02 09:59:03, 3] smbd/se"..., 57) = 57
geteuid32() = 0
write(22, " setting sec ctx (0, 0) - sec_c"..., 49) = 49
geteuid32() = 0
getegid32() = 0
setgroups32(0, 0) = 0
setresgid32(0xffffffff, 0, 0xffffffff) = 0
getegid32() = 0
setresuid32(0xffffffff, 0, 0xffffffff) = 0
geteuid32() = 0
stat64("", 0xbfffed50) = -1 ENOENT (No such file or
directory)
umask(022) = 0
open("/var/log/samba/log.smb", O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE,
0666) = 23fstat64(23, {st_mode=S_IFREG|0644, st_size=419681, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40016000
fstat64(23, {st_mode=S_IFREG|0644, st_size=419681, ...}) = 0
_llseek(23, 419681, [419681], SEEK_SET) = 0
munmap(0x40016000, 4096) = 0
close(22) = 0
umask(0) = 022
stat64("/etc/samba/conf/printers/smb.printers.admin.conf",
{st_mode=S_IFREG|0644, st_size=2955, ...}) = 0
stat64("/etc/samba/conf/smb.bumble.conf", {st_mode=S_IFREG|0644,
st_size=10158, ...}) = 0
stat64("/etc/samba/smb.conf", {st_mode=S_IFREG|0644, st_size=534, ...})
= 0
time(NULL) = 1025600343
geteuid32() = 0
fstat64(23, {st_mode=S_IFREG|0644, st_size=419681, ...}) = 0
write(23, "[2002/07/02 09:59:03, 3] param/l"..., 61) = 61
geteuid32() = 0
write(23, " Initialising global parameters"..., 33) = 33
open("/etc/samba/smb.conf", O_RDONLY|O_LARGEFILE) = 22
fstat64(22, {st_mode=S_IFREG|0644, st_size=534, ...}) = 0
read(22, "[global]\n\n server string = S"..., 534) = 534
close(22) = 0
time(NULL) = 1025600343
geteuid32() = 0
write(23, "[2002/07/02 09:59:03, 3] param/p"..., 56) = 56
geteuid32() = 0
write(23, " params.c:pm_process() - Proces"..., 78) = 78
time(NULL) = 1025600343
geteuid32() = 0
write(23, "[2002/07/02 09:59:03, 3] param/l"..., 59) = 59
geteuid32() = 0
write(23, " Processing section \"[global]\"\n", 32) = 32
getpid() = 21211
time(NULL) = 1025600343
geteuid32() = 0
write(23, "[2002/07/02 09:59:03, 1] lib/deb"..., 56) = 56
getpid() = 21211
geteuid32() = 0
write(23, " INFO: Debug class all level = "..., 63) = 63
stat64("/etc/samba/conf/smb.%h.conf", 0xbfffe3d0) = -1 ENOENT (No such
file or directory)
stat64("/etc/samba/conf/smb.bumble.conf", {st_mode=S_IFREG|0644,
st_size=10158, ...}) = 0
open("/etc/samba/conf/smb.bumble.conf", O_RDONLY|O_LARGEFILE) = 22
fstat64(22, {st_mode=S_IFREG|0644, st_size=10158, ...}) = 0
read(22, ";++++++++++++++++++++++++++++++\n"..., 10158) = 10158
close(22) = 0
time(NULL) = 1025600343
geteuid32() = 0
write(23, "[2002/07/02 09:59:03, 3] param/p"..., 56) = 56
geteuid32() = 0
write(23, " params.c:pm_process() - Proces"..., 90) = 90
.... and so on.
We do make use of include directives in the smb.conf file see the
extracted section below...
[global]
server string = Samba Server
printcap name = /etc/printcap
load printers = yes
printing = lprng
log file = /var/log/samba/log.smb
log level = 3
max log size = 1000000
password level = 4
security = user
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
domain logons = yes
wins support = yes
wins proxy = yes
dns proxy = yes
include = /etc/samba/conf/smb.%h.conf
This machine is "bumble" and its smb.bumble.conf file looks like this
;++++++++++++++++++++++++++++++
; Global
;++++++++++++++++++++++++++++++
[global]
workgroup = ADMIN
netbios aliases = AURORA
wins server =
wins support = yes
logon script = %h.bat
server string = SMB server for admin
include = /etc/samba/conf/printers/smb.printers.admin.conf
So taking a wild guess at the problem the smb is getting confused about
the daisy chained config files and coming to the conclusion that they
have been changed.
Anybody seen this before? I'll happily volunteer to go and find the bug
if this is something new.
--
______ jonathan at cs.keele.ac.uk Jonathan Knight,
/ Department of Computer Science
/ _ __ Telephone: +44 1782 583437 University of Keele, Keele,
(_/ (_) / / Fax : +44 1782 713082 Staffordshire. ST5 5BG. U.K.
More information about the samba
mailing list