mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-26 23:24:09 +02:00
Set rlimits in the Application class (rather than in the init script).
Fixes #5260
This commit is contained in:
parent
02e0933e7c
commit
6714796ecd
@ -65,9 +65,6 @@ start() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting Icinga 2: "
|
echo "Starting Icinga 2: "
|
||||||
ulimit -n 32768
|
|
||||||
ulimit -s 512
|
|
||||||
ulimit -u 16384
|
|
||||||
$DAEMON -c $ICINGA2_CONFIG_FILE -d -e $ICINGA2_ERROR_LOG -u $ICINGA2_USER -g $ICINGA2_GROUP
|
$DAEMON -c $ICINGA2_CONFIG_FILE -d -e $ICINGA2_ERROR_LOG -u $ICINGA2_USER -g $ICINGA2_GROUP
|
||||||
|
|
||||||
echo "Done"
|
echo "Done"
|
||||||
|
@ -187,6 +187,8 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
Application::SetStartTime(Utility::GetTime());
|
Application::SetStartTime(Utility::GetTime());
|
||||||
|
|
||||||
|
Application::SetResourceLimits();
|
||||||
|
|
||||||
/* Set thread title. */
|
/* Set thread title. */
|
||||||
Utility::SetThreadName("Main Thread", false);
|
Utility::SetThreadName("Main Thread", false);
|
||||||
|
|
||||||
|
@ -112,6 +112,32 @@ Application::Ptr Application::GetInstance(void)
|
|||||||
return m_Instance->GetSelf();
|
return m_Instance->GetSelf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Application::SetResourceLimits(void)
|
||||||
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
|
# ifdef RLIMIT_NOFILE
|
||||||
|
rlimit rl;
|
||||||
|
rl.rlim_cur = 16 * 1024;
|
||||||
|
rl.rlim_max = rl.rlim_cur;
|
||||||
|
|
||||||
|
if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
|
||||||
|
Log(LogCritical, "base", "Could not adjust resource limit for open file handles (RLIMIT_NOFILE)");
|
||||||
|
# else /* RLIMIT_NOFILE */
|
||||||
|
Log(LogCritical, "base", "System does not support adjusting the resource limit for open file handles (RLIMIT_NOFILE)");
|
||||||
|
# endif /* RLIMIT_NOFILE */
|
||||||
|
|
||||||
|
# ifdef RLIMIT_NPROC
|
||||||
|
rl.rlim_cur = 16 * 1024;
|
||||||
|
rl.rlim_max = rl.rlim_cur;
|
||||||
|
|
||||||
|
if (setrlimit(RLIMIT_NPROC, &rl) < 0)
|
||||||
|
Log(LogCritical, "base", "Could not adjust resource limit for number of processes (RLIMIT_NPROC)");
|
||||||
|
# else /* RLIMIT_NPROC */
|
||||||
|
Log(LogCritical, "base", "System does not support adjusting the resource limit for number of processes (RLIMIT_NPROC)");
|
||||||
|
# endif /* RLIMIT_NPROC */
|
||||||
|
#endif /* _WIN32 */
|
||||||
|
}
|
||||||
|
|
||||||
int Application::GetArgC(void)
|
int Application::GetArgC(void)
|
||||||
{
|
{
|
||||||
return m_ArgC;
|
return m_ArgC;
|
||||||
|
@ -51,6 +51,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual int Main(void) = 0;
|
virtual int Main(void) = 0;
|
||||||
|
|
||||||
|
static void SetResourceLimits(void);
|
||||||
|
|
||||||
static int GetArgC(void);
|
static int GetArgC(void);
|
||||||
static void SetArgC(int argc);
|
static void SetArgC(int argc);
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
typedef int SOCKET;
|
typedef int SOCKET;
|
||||||
#define INVALID_SOCKET (-1)
|
#define INVALID_SOCKET (-1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user