[Samba] Windows 7 + Samba 3.4.5 locking problem

Rune Tønnesen rune at tonnesen.org
Fri Mar 5 14:11:25 MST 2010


Den 05-03-2010 20:42, Lars Bensmann skrev:
> Hello,
>
> after having no problem with four Windows 2000 workstations and one Samba
> 2.something server for several years in a medical practice the practice
> software (DocComfort) dropped support for Windows 2000 beginning of this
> year. So I bought new hardware for the workstations and servers and
> installed from scratch. Now there are four Windows 7 Professional 32bit
> Workstations (with UAC disabled) and one Debian Lenny Server with Samba
> from backports.org (I started with 3.4.3 (2:3.4.3-1~bpo50+2) and just now
> upgraded to 3.4.5 (2:3.4.5~dfsg-1~bpo50+2), but this did not make a
> difference).
>
> The application works with a lot of database files (*.DBF) and everything
> works fine if only one workstation has started the application. Getting
> from the main menu to the data for the first patient takes about 3 to 5
> seconds which is fine. But every station started after the first one takes
> about 35 seconds to get to the data for the first patient. Once the
> application is started further requests are fast. Unfortunately the
> application cannot be open all the time, so there is always this 30 second
> delay which is not acceptable.
>
> I tried for a week to solve this problem but I'm running out of ideas.
> My first guess was that this is probably a locking problem and this does
> indeed seem to be the case. I disabled oplocks in smb.conf which
> unfortunately only had the effect that then even the first station gets
> hit with the 30 second penalty.
>
> Tuning different parameters (read/write raw) had no noticable effect on
> the delay.
>
> Monitoring the activity in top shows that during these 30 seconds the smbd
> process for the client is consuming all processing power it can get (on
> one core).
>
> Having set "loglevel = 2 locking:10" the log gets filled up with entries
> like these:
>
> [2010/03/05 20:04:30,  8] locking/posix.c:234(posix_fcntl_getlock)
>    posix_fcntl_getlock 105 4729736 242 0
> [2010/03/05 20:04:30,  8] lib/util.c:1832(fcntl_getlock)
>    fcntl_getlock fd=105 offset=4729736 count=242 type=0
> [2010/03/05 20:04:30,  3] lib/util.c:1856(fcntl_getlock)
>    fcntl_getlock: fd 105 is returned info 2 pid 0
> [2010/03/05 20:04:30,  8] locking/posix.c:264(posix_fcntl_getlock)
>    posix_fcntl_getlock: Lock query call successful
> [2010/03/05 20:04:30, 10] locking/brlock.c:1270(brl_locktest)
>    brl_locktest: posix start=4729736 len=242 unlocked for fnum 5219 file doc2/daten/deziff/EBM2000/ziffer.DBF
> [2010/03/05 20:04:30, 10] locking/locking.c:152(strict_lock_default)
>    strict_lock_default: flavour = WINDOWS_LOCK brl start=4729736 len=242 unlocked for fnum 5219 file doc2/daten/deziff/EBM2000/ziffer.DBF
> [2010/03/05 20:04:30, 10] locking/posix.c:284(is_posix_locked)
>    is_posix_locked: File doc2/daten/deziff/EBM2000/ziffer.DBF, offset = 4729978, count = 242, type = READ
> [2010/03/05 20:04:30, 10] locking/posix.c:172(posix_lock_in_range)
>    posix_lock_in_range: offset_out = 4729978, count_out = 242
>
> This repeats over and over. Only offset is increased by 242 each time.
> These entries fill up the 1M log file in about 1 or 2 seconds.
>
> I hope someone has an idea what I can do about this. The company
> supporting the practice management application is no help at all and only
> suggested switching to Windows Server which I really, really don't want to
> do.
>
> I followed the Samba Checklists and did all the test therin. Everything
> was fine except two tests (Nr. 5 and 6). Could this be part of the
> problem? Everything else is working fine. Domain logons are a bit on the
> slow side, but acceptable. Copying large files from Samba to the clients
> is at the limit of what's possible with the 100MBit network.
>
> Thanks for any help or pointers to documentation that might help with this
> problem,
> Lars
>
> Test nr. 5 fails:
> $ nmblookup.samba3 -B HINTEN-PC '*'
> added interface eth0 ip=fe80::e2cb:4eff:fe39:e8c2%eth0
> bcast=fe80::ffff:ffff:ffff:ffff%eth0 netmask=ffff:ffff:ffff:ffff::
> added interface eth0 ip=10.121.1.1 bcast=10.121.1.255
> netmask=255.255.255.0
> added interface lo ip=::1 bcast=::1
> netmask=ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
> added interface lo ip=127.0.0.1 bcast=127.255.255.255 netmask=255.0.0.0
> querying * on 10.121.1.3
> name_query failed to find name *
>
> Test nr. 6 only returns the address of the server and no client addresses:
> $ nmblookup.samba3 -d 2 '*'
> added interface eth0 ip=fe80::e2cb:4eff:fe39:e8c2%eth0
> bcast=fe80::ffff:ffff:ffff:ffff%eth0 netmask=ffff:ffff:ffff:ffff::
> added interface eth0 ip=10.121.1.1 bcast=10.121.1.255
> netmask=255.255.255.0
> added interface lo ip=::1 bcast=::1
> netmask=ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
> added interface lo ip=127.0.0.1 bcast=127.255.255.255 netmask=255.0.0.0
> querying * on 10.121.1.255
> Got a positive name query response from 10.121.1.1 ( 10.121.1.1 )
> 10.121.1.1 *<00>
>
> I also captured traffic with wireshark of one startup with no delay and
> one startup were the application was already running on another
> workstation. As this are too big for the mailing list (16MB and 26MB) I
> put them up for download:
> http://almosthappy.de/duhLd6Tm1GQoC3j0YyiJ637IS/capture.fast
> http://almosthappy.de/duhLd6Tm1GQoC3j0YyiJ637IS/capture.slow
> (These were captured with Samba 3.4.3.)
>
> Here is some more output of my configuration:
>
> $ uname -a
> Linux server 2.6.26-2-amd64 #1 SMP Thu Feb 11 00:59:32 UTC 2010 x86_64 GNU/Linux
>
> $ testparm.samba3
> Load smb config files from /etc/samba/smb.conf
> Processing section "[homes]"
> Processing section "[netlogon]"
> Processing section "[DocExpert]"
> Processing section "[profiles]"
> Loaded services file OK.
> Server role: ROLE_DOMAIN_PDC
> Press enter to see a dump of your service definitions
>
> [global]
>          workgroup = PRAXIS
>          server string = %h server
>          interfaces = eth0, lo
>          bind interfaces only = Yes
>          obey pam restrictions = Yes
>          pam password change = Yes
>          passwd program = /usr/bin/passwd %u
>          passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
>          unix password sync = Yes
>          log level = 2 locking:10
>          syslog = 0
>          log file = /var/log/samba/log.%m
>          max log size = 1000
>          time server = Yes
>          max open files = 10000
>          load printers = No
>          printcap name = /dev/null
>          disable spoolss = Yes
>          add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
>          logon script = logon.cmd
>          logon path = \\%N\profiles\%U
>          logon drive = P:
>          domain logons = Yes
>          os level = 255
>          preferred master = Yes
>          domain master = Yes
>          panic action = /usr/share/samba/panic-action %d
>          hosts allow = 10.121.1.1/24, 127.
>          hosts deny = ALL
>          printing = bsd
>          print command = lpr -r -P'%p' %s
>          lpq command = lpq -P'%p'
>          lprm command = lprm -P'%p' %j
>
> [homes]
>          comment = Home Directories
>          valid users = %S
>          read only = No
>          create mask = 0700
>          directory mask = 0700
>          browseable = No
>          browsable = No
>
> [netlogon]
>          comment = Network Logon Service
>          path = /home/samba/netlogon
>          guest ok = Yes
>
> [DocExpert]
>          comment = Doc Expert
>          path = /home/samba/docexpert
>          read only = No
>          create mask = 0660
>          force create mode = 0660
>          directory mask = 0770
>          force directory mode = 0770
>
> [profiles]
>          comment = Network Profiles Share
>          path = /home/samba/profiles
>          read only = No
>          create mask = 0600
>          directory mask = 0700
>          hide files = /desktop.ini/outlook*.lnk/*Briefcase*/
>          store dos attributes = Yes
>          browseable = No
>          browsable = No
>
>
>    
Dear Lars

A few years ago i had a similarly problem, unfortunately I don't have 
the config file.
You might want to look into oplocks, but be aware of your dataintegrity.
http://www.samba.org/samba/docs/using_samba/ch08.html
http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html#id2616906

-- 
Best Regards
Rune Tønnesen



More information about the samba mailing list