年末需要在微信公众平台上搞一波活动,对于每个参加活动的微信公众号粉丝,服务器需要依次进行下面一些操作:
目前使用的软件和硬件
期望
最开始的时候跑 5 个 worker ,没几分钟服务器直接挂了,在阿里云控制台重启都花了 10 几分钟。。。后面改成 2 个 worker 在测试每秒 10 人的处理时, cpu 占用 100%,内存大约用去 1GB ,而且大约需要近 2s 才能完成,时间久了队列会一直增长,但要是加上 timelimit 的话会导致一些任务失败。
大家有什么方案建议,能让每个参加活动的用户得到尽量短的时间反馈呢?
1
996635 2017-01-17 16:16:25 +08:00
只有第二部占 CPU, 粉丝一共多少人? 预先跑好
|
2
macleek OP @996635 粉丝既包括已关注了的一部分,更主要的是之前没有关注过的人,所以没法预先跑啊。
现在准备在阿里云上按量付费一台高配置的云服务器跑 celery 了。 |
3
guyskk 2017-01-17 16:23:41 +08:00
合成图片比较耗 CPU ,需要优化算法或者加 CPU ,上传图片耗 IO ,加带宽或者压缩图片,另外要避免把图片读到内存里。
|
4
996635 2017-01-17 16:33:42 +08:00
@macleek 你得把这个流程拆开,生成图片要 隔离, 既然已经异步了, 就彻底一些, 否则量大了 还是扛不住.
另,我之前做过类似的业务,不过量比这个大, 最后生成了 1400W 图片, 有好几层流量过滤 有一个不错的思路是,你试试用前端 canvas 生成图片. |
5
macleek OP |
8
ryd994 2017-01-17 17:38:56 +08:00 via Android
能不能不要用 pillow 而是在前端用 css ?
|
9
macleek OP |
10
ryd994 2017-01-17 18:25:25 +08:00 via Android
光来回拷贝就开销不少
要调优先看计时 预先生成还是有价值的,毕竟老用户还是不少,能抠一点是一点 这些请求统计过么,会有重复请求么,有的话优先上缓存 |
11
ryd994 2017-01-17 18:30:20 +08:00 via Android
取决于图片格式,可以考虑利用 iterable 边上传边生成
|
12
robinlovemaggie 2017-01-17 19:58:53 +08:00 via Android
有个疑问:用阿里主机向腾讯的服务上送东西?楼主这得是有多么博爱?
|
13
macleek OP |