Thanks for the connection details. I understand the confidentiality issue, of course. However, I miss information about threadSafeConnection flag being set to either true or false. It is typically a part of this cfg file and it is essential piece of information because it directly influences the overall behavior.
If the connection is thread safe (threadSafeConnection=true), each component in a graph uses it's own db connection instance which is closed after the component is finished. There is a theoretical chance that if you use too many components working with DB in one graph phase, they all get their own connection and connection limit set on DB server's side prevents you from creating more connections. If another component attempts to create one more, an error is thrown.
If the connection is thread unsafe (threadSafeConnection=false), all components share exactly one instance of connection. This type of connection is closed at the very end of the graph run. This on the other hand brings a potential risk of error due to timeout. If for example DBInputTable reads something right after the graph starts, then you process the data for two hours and then you try to save the data, a timeout error may appear.
Regarding the error code 500, we are unfortunately unable to solve it without the log. Hopefully something from my explanation guides you to the issue location even without the log file.