Worker -> Durable Object fetch RPC call performance in Rust

Hello I'm running into some performance issues using Workers and Durable Objects. I'm using rust. I would like some help improving performance. I have a worker that clients connect to. The Worker then passes the request through to a Durable Object (DO) which establishes a websocket connection and sends over a somewhat large batch of data. I measured a measures for a cold start of the durable object. * the total time for the Durable Object "fetch" method to complete do_t * total time for the worker to call the durable object fetch worker_t * size of the payload the durable object sends size Then I take Δt = worker_t - do_t to measure the latency for the worker to call the durable object fetch. I plot Δt/size to get the attached plot. The equation of the plotted linear regression is y = 0.16x + 295 so rate in increase in latency is 0.16 ms/KB (or 50Mbs) is this expected?. Also my interpretation of the 290 is the fixed time in ms for my DO to boot up. Is there a way to make this faster? A 290ms startup seems slow. My main thoughts: * Am I just doing something dumb to make this slow? * How can I improve this scaling (the 0.16ms/KB)? Could it be caused by crossing a WASM <-> JavaScript boundary? If so, could I improve performance by rewriting this all in JavaScript. * How can I improve the startup time? * What are some things I should look for? I noticed I maybe be doing an extra allocation of the data, could things like that be significant. * is there a better way to directly measure the Durable Object startup time than what I've done here? I also attached some code snippets where I call the durable object from the worker, and the the fetch method:
0 Replies
No replies yetBe the first to reply to this messageJoin

Did you find this page helpful?