The Intelligent Server service crashes and logs the following records in the DSSErrors.log
[HOST:<host_name>][SERVER:CastorServer][PID:30082][THR:140604326401792][Database Classes][Error][UID:xxx][SID:xxx][OID:xxx][ConnectionKeeper.cpp:77] JdbcStatementWrapper::ExecQuery failed. Disconnected. Error type: Unknown exception. Jdbc operation attempted: MIX_JdbcStatement_execute. Error Message:unable to create native thread: possibly out of memory or process/resource limits reached.
These articles recommend increasing the number of descriptors (nofiles) to 65535, but that would be insufficient.
Additionally, there are error messages such as the following:
2024-06-12 17:09:57.201-03:00 [HOST:<host_name>][SERVER:CastorServer][PID:30082][THR:140604345313024][Query Engine][Error][0x80042300][UID:xxx][SID:xxx][OID:xxx][CDSSQueryEngine.cpp:6408] QueryEngine encountered error: JdbcStatementWrapper::ExecQuery failed. Disconnected. Error type: Unknown exception. Jdbc operation attempted: MIX_JdbcStatement_execute. Error Message:unable to create native thread: possibly out of memory or process/resource limits reached.. 2024-06-12 17:09:57.254-03:00 [HOST:<host_name>][SERVER:CastorServer][PID:25303][THR:139673487382784][MultiProcess][Error][UID:0][SID:0][OID:0][Multiprocess.cpp:365] Quiting child process because of error: ::pthread_create failed. System Error (EAGAIN): --- Resource temporarily unavailable
The threads and child processes for the Intelligent Server process are consuming a high amount of resources for the service account that runs the Intelligent Server service, which includes OpenRefine Server, Search Engine, Process Servers, and JDBC processes. Each JDBC process can create between 20 and 50 threads, while the ODBC process only creates between 4 and 10 threads.
Therefore, when switching from ODBC to JDBC, it is easy to reach the thread limit. As a result, the thread quota is low and may not be sufficient when the Intelligent Server service is under a very high workload.
mstruser soft nproc 20480