dbus needs more than the default 1024 open files
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
dbus (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
ltsp (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
=== PROBLEM ===
On a multiuser system with many desktop users, the system dbus-daemon process can easily exceed the 1024 open files allowed by the default ulimit. When it exceeds that, it goes into a tight loop, sucking up 100% processor, and nobody can log in.
=== WORKAROUND ===
Add the line
limit nofile 10000 10000
to /etc/init/dbus.conf . Tested and works on Ubuntu 9.04 and 10.04.
Note: Editing /etc/default/dbus does not work any longer since the transition to the upstart job.
=== ORIGINAL DESCRIPTION ===
Ubuntu 9.04
dbus 1.2.12-0ubuntu2
We're on x86_64, but this is really arch independent
On a multiuser system with many desktop users, the system dbus-daemon process can easily exceed the 1024 open files allowed by the default ulimit. When it exceeds that, it goes into a tight loop, sucking up 100% processor, and nobody can log in. And, of course, everything using dbus is then adversely affected. Nothing in the logs points to too many open files as being the problem. Only attaching strace to the processes clarified what was happening. This is bad for thin client people. e.g. Edubuntu users and corporate desktop rollouts.
As an example, I have a corporate server running 58 gnome desktops via XDMCP and dbus-daemon has about 1200 files open.
Increasing the default "ulimit -n" setting for user 'messagebus' or including a higher "ulimit -n" in the sysvinit file solves the problem.
Other than that, Ubuntu has done wonderfully compared to the Fedora that we just upgraded from. I'm most pleased with your excellent work.
Changed in dbus (Ubuntu): | |
status: | Incomplete → New |
description: | updated |
Changed in dbus (Ubuntu): | |
status: | New → Confirmed |
Changed in ltsp (Ubuntu): | |
status: | New → Invalid |
I need confirmation of the "tight loop" - could you cause this and run strace on the dbus-daemon to capture what it's doing.
Ideally also run "gdb" on it and use "bt" to obtain a backtrace