Your data. Anywhere you go.

New Relic for iOS or Android


Download on the App Store    Android App on Google play


New Relic Insights App for iOS


Download on the App Store


Learn more

Close icon

Agent load on system


#1

Our application is structured in a somewhat unusual way in that each of our customers had a dedicated pool of processes running our application (the same application just pointed to different database entries). This means that is not untypical for our servers to have several hundred rails applications running. We are currently using Passenger on top of apache to server out the web app.

My concern is about the additional overhead that I should expect on the server for adding the New Relic agent. Specifically, the number of additional file descriptors (as per actual files and network sockets) per running rails process and ram overhead? Does the New Relic Agent do any pooling of it’s own? If so, does this pooling only work within a particular application pool, or across all applications on the server?


#2

Hi there @justin38 - good question!

The agent will run alongside your application in each Ruby process. So, there will be an instance of the agent per process.

There is not a pool or daemon that can be shared between processes. The one exception being Resque, where forked children workers have disconnected instance of the agent that passes it’s data to its parent worker process over a pipe.

Does this information help address your concern here?

– Sara


#3

It does partially. So we should expect 1 addition process per each of our processes. How many connections does this process make to New Relic? What connection type is it TCP or UPD? If TCP, does it keep the socket open the whole time our process stays running? In the case where passenger reuses the process to handle multiple requests, does the New Relic agent connects for each request or for the complete time the passenger process is loaded?

Thank You

Justin


#4

Hi @justin38- thanks for the follow up.

The agent will run within your application processes. There are not any additional processes spawned by the agent. The agent maintains a http connection (TCP connection) that is used for agent to collector communication with a keep alive timeout.

In most cases the agent will connect once at agent startup, and reuse the same connection for the lifetime of the process. If the connection drops it will reconnect, but it does not reconnect on each request.

I hope this information is helpful - cheers!

Sara