You have to identify the process with the problem. Then work backwards from there.
Check the user profile set up, ulimit, those sorts of things. Check the code/script/logs for ideas about what that process does. We had a daemon do this because it failed to reap children and process-level active process limit was 256. We saw zombies, so we had a clue. So it was a code problem. fork() fails generally when:
1. there are no free process slots on the system
2. the process tries to exceed some predefined limit on process creation. could be local to the process itself.
3. There is not enough virtual memory - not likely since you have active in-memory caching.
And Red Hat is not one I know well. They made things "different" from other systems, so any advice as to what to tweak would need to come from a Red Hat expert.
Here is a closed to me resource page:
https://access.redhat.com/site/solutions/22105