我在杭州,年初找工作的时候,ruby 岗位不超过 10 个…… 新的 side project 已经改用 golang 了! 虽说开发速度 gin 远远远远不如 rails,但是运行速度是真香,内存占用也少。vps 都可以用便宜点的。
也许是我水平有限。但感觉题中的问题不应该是用 Sidekiq 来做的。
你说的「公司分析」,猜测起来应该是一个 Worker Class,毕竟都是「公司分析」,不应该因为完全可变的外部信息客户 ABC 而弄出多种 Worker,否则搞出 AbcWorker、ZzzWorker 了?
另外你 Sidekiq 的配置里的权重数不好,Sidekiq 只关心比例,所以 20-40 应该改成 1-2。
前一个 side project 的服务端是用 Ruby on Rails 写的,下一个准备用 golang 了。 在招聘网站上搜一下,一个月内发布的岗位,Ruby 的只有 3-5 个,golang 的估计有 30-50 个。
直觉上可以。 如果非要精确到秒或者毫秒的话,那就需要仔细控制 Worker 的执行时间,比如提前个几秒钟开始执行,然后在 Worker 本体内做精确的时间控制。
想了解一下描述中两个地方是否前后冲突
很有可能。谢谢。我再找找其他的看看。
找到了:https://en.wiktionary.org/wiki/roll_one%27s_own ,英文解释:「To create something of which an analogue is commercially available.」
薪水是 ¥40-100/h,每周工作 40h,一个月就算 170h 吧,算起来薪水范围是 ¥6800-¥17000。 然后必须全职,说实话真没有多少吸引力。
希望我没有进入「我就是要证明我的观察是对的」那种魔怔。
我又做了个测试,麻烦帮看看测试思路是否不对:
模拟系统内存吃紧的情况,再看看这个内存是否会被释放掉。测试脚本基本不变,就改那个生成 json 文件的大小的数值(测试的 ruby)。 这一次测试的机器内存 4G,我把那个数值从 70W 改成 100W,这样生成的文件大小就变成了 73M。 然后开四个窗口每隔半分钟运行一个脚本,当三个进程都把字符串 parse 成对象后,内存就爆满了。 等第四个进程开始执行 JSON.parse 时,预期反应是之前设置为空了的进程的内存开始释放,结果是系统随意拿起个进程直接 Kill 掉了。(如果不想等到第 4 个进程,可以更改生成 json 文件大小的那个数值)
感谢解疑。我去多看看资料。
启动 ruby 没有设置参数,就默认的。
你这个结果也是没有释放干净啊,就 objspace 里面是干净的,但 system memory 的占用应该要下降到 50M 以内才对。
但没有尝试 jemalloc,前几天试了 Sidekiq 作者说的设置 MALLOC_ARENA_MAX=2,内存上涨是慢下来了,但性能受影响非常明显。因为现在的执行效率其实完全可以接受,暂时也就没再折腾了。