Icinga / icinga2

The core of our monitoring platform with a powerful configuration language and REST API.
https://icinga.com/docs/icinga2/latest
GNU General Public License v2.0
2.03k stars 578 forks source link

[dev.icinga.com #9972] Icinga2 - too many open files - Exception #3305

Closed icinga-migration closed 9 years ago

icinga-migration commented 9 years ago

This issue has been migrated from Redmine: https://dev.icinga.com/issues/9972

Created by elabedzki on 2015-08-21 07:18:44 +00:00

Assignee: gbeutner Status: Resolved (closed on 2015-08-24 09:08:22 +00:00) Target Version: 2.3.9 Last Update: 2015-08-26 06:25:37 +00:00 (in Redmine)

Icinga Version: v2.3.8
Backport?: Already backported
Include in Changelog: 1

Hi guys,

we have a problem with loading the config fragments exported through lconf ( 1.5.1 ), which produces to many config fragments, so that the icinga2 core can not deal with.

We have tried something like increasing the OS limits "open files" which has currently a value of 500000 for the nagios/icinga user, but it doesn't help.

We need a patch either for icinga2 core ( so he can handle it ) or for lconf ( so he can maybe merge that config fragments to one file ).

Kind regards Enrico

Changesets

2015-08-24 09:04:26 +00:00 by (unknown) 6a8f890e7c6ba8c311412c64879afb8a5cc84724

Remove the FutureExpression class

fixes #9972

2015-08-26 04:57:24 +00:00 by (unknown) 1f63bcb1b318fd8becac26a3061767cb81030b48

Remove unused argument 'async'

refs #9972

2015-08-26 05:10:34 +00:00 by (unknown) 73ed46f87d336a6abe346cd4eb82b471d8d02d31

Remove the FutureExpression class

fixes #9972

Relations:

icinga-migration commented 9 years ago

Updated by mfrosch on 2015-08-24 07:46:15 +00:00

The actual error is:

information/ConfigCompiler: Compiling config file: /usr/local/LConf/tmp/lconfexport.tmp/test/Commands/vcc-server/check_win_service_vcc_datastore.conf
information/ConfigCompiler: Compiling config file: /usr/local/LConf/tmp/lconfexport.tmp/test/Commands/vcc-server/check_win_service_vcc_erm_service_ncc.conf
critical/config: Error: Function call 'std::ifstream::open' for file '/usr/local/LConf/tmp/lconfexport.tmp/test/Commands/vcc-server/check_win_service_vcc_ivr.conf' failed with error code 24, 'Too many open files'
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command-plugins.conf
Icinga 2 config verification failed. Aborting...
icinga-migration commented 9 years ago

Updated by mfrosch on 2015-08-24 07:48:09 +00:00

Seems like we are currently not explicity closing the file streams after reading the file.

I think we should do that, or would we need the individual file streams after reading the contents in the beginning?

icinga-migration commented 9 years ago

Updated by mfrosch on 2015-08-24 07:58:28 +00:00

From my understanding the lexer gets direct access to the streams.

I suggest we read the files into memory before handing a stream to the lexer. Similar to CompileText

icinga-migration commented 9 years ago

Updated by Anonymous on 2015-08-24 09:08:22 +00:00

Applied in changeset 6a8f890e7c6ba8c311412c64879afb8a5cc84724.

icinga-migration commented 9 years ago

Updated by gbeutner on 2015-08-24 09:08:49 +00:00

Fixed in the master branch. Please test this so we can backport this into 2.3.x.

icinga-migration commented 9 years ago

Updated by gbeutner on 2015-08-26 06:25:38 +00:00

icinga-migration commented 9 years ago

Updated by gbeutner on 2015-10-26 12:04:38 +00:00