If the issue is indeed caused by heap memory utilization, symptoms of a GC pause would certainly include HTTP connection timeouts.
Check your SDC instance's GC logs to verify whether or not you're coming up against the upper boundaries of your available heap memory - a tool like gceasy can be pretty useful for parsing and visual analysis of your GC logs.
You can also check GC memory usage in real-time from the SDC UI by going to Administration (gear icon, top-right) > SDC Metrics > Heap Memory Usage graph.
A restart of your SDC is resolving this issue because it'll flush all in-use memory, bringing up a JVM with little to no heap memory pressure.
I'm not sure which HTTP client stages (destination, origin, processor) both of your pipelines consist of, but we do have configurations in place to help control the amount of memory usage for a given pipeline (Max Batch Size, Batch Wait Time, Max Object Length). Check out our documentation
for additional clarification on those configurations.
Ultimately the resolution may be to simply increase the heap size for your SDC JVM because your usage or average record size has increased.
Software Engineer - Engineering Productivity