Hi ddenise,
Yes I did.
The solution was to decrease the ulimit stack_size for the oraprod (oracle software owner) :
We had it set to 10MB
ulimit -s 10240
This only allows 306 threads to be created.
We reduced it to 2MB
ulimit -s 2048
This allows 1532 threads to be created.
Further to this, if you are using 11i Oracle Financials, the applmgr user needs it stack_size set to 10MB otherwise you will have application problems.
Hope this helps.
Let me know if you need anymore info.
Dave
You can check how many threads are created by using the following piece of code :
/* compile with: gcc -lpthread -o thread-limit thread-limit.c */
/* originally from:
http://www.volano.com/linuxnotes.html */
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#define MAX_THREADS 10000
int i;
void run(void) {
char c;
if (i < 10)
printf("Address of c = %u KB\n", (unsigned int) &c / 1024);
sleep(60 * 60);
}
int main(int argc, char *argv[]) {
int rc = 0;
pthread_t thread[MAX_THREADS];
printf("Creating threads ...\n");
for (i = 0; i < MAX_THREADS && rc == 0; i++) {
rc = pthread_create(&(thread[i]), NULL, (void *) &run, NULL);
if (rc == 0) {
pthread_detach(thread[i]);
if ((i + 1) % 100 == 0)
printf("%i threads so far ...\n", i + 1);
}
else
printf("Failed with return code %i creating thread %i.\n",
rc, i + 1);
}
exit(0);
}
compile it like this : gcc -pthread -o thread-limit thread-limit.c
and run it like this : ./thread-limit.c