[systemd-devel] Additional error details when resource limits are exceeded

Kai Krakow hurikhan77 at gmail.com
Mon Dec 21 16:58:29 PST 2015


Am Tue, 22 Dec 2015 08:41:14 +0800
schrieb Peter Hoeg <peter at hoeg.com>:

> Hi,
> 
> >[Service]
> >Type=forking
> >PIDFile=/run/teamviewerd.pid
> >ExecStart=/opt/teamviewer10/tv_bin/teamviewerd -d
> >Restart=on-abort
> >StartLimitInterval=60
> >StartLimitBurst=10
> 
> The alternative ExecStart I'm using:
> 
> ExecStart=/opt/teamviewer10/tv_bin/teamviewerd -f
> 
> And then you can get rid of PIDFile and Type.

Type=simple cannot detect when a service is ready. Systemd simply
assumes it works as soon as execution starts. It doesn't matter in case
of teamviewerd but with service inter-dependencies this becomes
important.

Type=simple considers the service up immediatly thus triggering
dependent service for immediate execution while Type=forking considers
the service up only when appearance of the PIDFile signals so, and
only then schedules starting dependent services.

So, Type=forking is the only way to have synchronization points between
service that depend on each other.


> >Resource limit exhaustion (in kernel sense) is usually easily to be
> >found in dmesg. I think this wasn't the case here. I propose it was
> >just because of StartLimitBurst?
> 
> I haven't looked at the code, but again, if systemd knows that some
> limit is being exceeded, wouldn't it make sense to say which one?

Probably yes... Maybe Lennart pays attention?

The message you were seeing usually applies to resource limits as in
"respawn limits & friends", not as in "RLIMIT" (kernel). Otherwise you
should explicitly see messages about "RLIMIT".

-- 
Regards,
Kai

Replies to list-only preferred.



More information about the systemd-devel mailing list