That's actually a great idea!

Em qui, 26 de mai de 2016 4:04 PM, Matt <hel...@gmail.com> escreveu:

> Check out node-canvas for the rendering, then you won't need any child
> processes.
>
> https://github.com/Automattic/node-canvas
>
> On Sat, May 21, 2016 at 8:20 AM, Zlatko Đurić <zladu...@gmail.com> wrote:
>
>> You should try it. But the bottom line is, in a thousand-reqs-per-sec
>> scenario, you'll almost always hit a bottleneck and need to scale the
>> processing job over multiple machines. So it's a tradeoff - how important
>> is it to you to finish every request, how fast you want results, is the
>> 1k/sec throughput constant or peak... your imagemagick (or phantom binary,
>> whatever you use) can only run so many instances on a single machine.
>>
>> So again - test your load such as it is. If you already have a sample
>> JSON, write a node script to make a png out of it - parsing json and
>> calling imagemagick should not take very much time. Then run the script 1k
>> times in a row and see how fast it goes. Then run it in thousand parallel
>> shells and see if that goes well, too.
>>
>> testing, testing, testing. Hope I'm not too boring with it.
>>
>>
>> On Fri, May 20, 2016 at 11:33 PM, Ω Alisson <thelinuxl...@gmail.com>
>> wrote:
>>
>>> Interesting. I wonder if it is better to use phantomjs for the PNG
>>> rendering. Although it is slower, I don't need child_process
>>>
>>> On Fri, May 20, 2016 at 5:42 PM Zlatko <zladu...@gmail.com> wrote:
>>>
>>>> You have multiple things there. Thousands requests (per second, I
>>>> assume) is a lot even without spawning a child shell. Thousands of spawned
>>>> shells, even without image magick, can bring a busy system down. But then
>>>> again, you will know best with a test. Try it and see if and where you get
>>>> stuck.
>>>>
>>>> Even if the system itself handles it, depending on how fast you get to
>>>> your saturation limits, your response time may get increasingly longer. If
>>>> that's acceptable and you know there will be downtimes when the jobs can
>>>> catch up, you might do well with this.
>>>>
>>>> The bigger problem I see there is that you cannot scale horizontally
>>>> there. You wanna be able to send those convert jobs to other machines as
>>>> well, probably. And for that, a simple child_process won't do, it would be
>>>> better if you had some sort of a job queue (MQ, redis pubsub, something of
>>>> the sort depending if you can allow failures and lost jobs). Then your
>>>> service that listens for reqs only shoots them to the queue, and listens
>>>> for a matching response on the response queue. And your actual png
>>>> generation service can listen on the other side and only take as many
>>>> requests simultaneously as it makes sense - e.g. maybe per num of CPUs or
>>>> similar, test there and see what makes sense. And when you have a lot of
>>>> work, just spawn another png generator on a new machine and you're good, no
>>>> blocking.
>>>>
>>>> The best thing to do is simply measure. Try to run several processes at
>>>> once and shoot a thousand requests, see how long it takes for all of them
>>>> to finish. Thn try to fire 10 waves of 1k reqs, each wave 2 seconds apart,
>>>> and see how that goes. (Of course, adjust the numbers to your 
>>>> environment.).
>>>>
>>>> Lastly, from my personal experience, these kinds of things regularly
>>>> grow out of hand and original specs, and it's better to just do job queues
>>>> from the get-go.
>>>>
>>>> Hope that helps.
>>>>
>>>> Zlatko
>>>>
>>>>
>>>> On Thursday, May 19, 2016 at 11:51:46 PM UTC+2, Alisson Cavalcante
>>>> Agiani wrote:
>>>>>
>>>>> I need to develop a service where the user sends an array of values, I
>>>>> generate a chart with d3.js and convert it to png with a child_process
>>>>> calling imagemagick to send it back to the user. Are there any caveats for
>>>>> child_process when scaling for thousands of requests?
>>>>>
>>>> --
>>>> Job board: http://jobs.nodejs.org/
>>>> New group rules:
>>>> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
>>>> Old group rules:
>>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "nodejs" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to nodejs+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to nodejs@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/nodejs/09ff5e6e-f2fe-45d7-bb57-488230ee78d0%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/nodejs/09ff5e6e-f2fe-45d7-bb57-488230ee78d0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> Job board: http://jobs.nodejs.org/
>>> New group rules:
>>> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
>>> Old group rules:
>>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "nodejs" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/nodejs/1Oi4uzV2TGw/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> nodejs+unsubscr...@googlegroups.com.
>>> To post to this group, send email to nodejs@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/nodejs/CACZE8Y6cqWvVTFF8Ee9SdvsBZTk-DKraTACCs_hq%2BWciTGbRcA%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/nodejs/CACZE8Y6cqWvVTFF8Ee9SdvsBZTk-DKraTACCs_hq%2BWciTGbRcA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Zlatko
>>
>> --
>> Job board: http://jobs.nodejs.org/
>> New group rules:
>> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
>> Old group rules:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "nodejs" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to nodejs+unsubscr...@googlegroups.com.
>> To post to this group, send email to nodejs@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/nodejs/CADu3pbzKt2Z85t1Of8a2GHw5VA8%3DHWzcxU%3Dm_9Nh%3Dhvx3VMBxw%40mail.gmail.com
>> <https://groups.google.com/d/msgid/nodejs/CADu3pbzKt2Z85t1Of8a2GHw5VA8%3DHWzcxU%3Dm_9Nh%3Dhvx3VMBxw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> Job board: http://jobs.nodejs.org/
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to nodejs+unsubscr...@googlegroups.com.
> To post to this group, send email to nodejs@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/CAPJ5V2YnNJ3-T6wHkGMSL7DomNbDqchQ9AM%3DP-HB5wkYSgszDQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/nodejs/CAPJ5V2YnNJ3-T6wHkGMSL7DomNbDqchQ9AM%3DP-HB5wkYSgszDQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
To post to this group, send email to nodejs@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/CACZE8Y7C0SSKNiaSLUNhWGhOp6dqj2BqeX9ZjrGCKYTOPy%2Bj_Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to