mynameisdebian: regarding your asnc processing load for apache responses: when I do that sort of thing I would prefer to write the work units to a queue, and have a set of workers popping items off that queue for processing asynchronously. Forking on each one seems like it would take a while just because forking itself takes a while. It would be more infra changes though.
depending on your req/second, you could use a PG database, or redis/rabitMQ, or just a ruby in memory Queue connected via a unix pipe (though beware pipe buffer size is not very big)
RE. shelling out to curl (system call has a kind of specific meaning that I don't think you're using), should just be able to do something like: https://gist.githubusercontent.com/ramfjord/85581a49e19addcf2cf8066c61312bf4/raw/0d9f75ad0f6c65cd87f710c6990b82607b006302/curl_with_data.rb