谢谢回复,这样看负载并不是很高
多谢指点,很明确的建议,我去尝试优化一下。
谢谢回复,那我就先从返回时间长的请求着手优化,先不加服务器了
嗯,逻辑相当复杂,用 lua 写维护起来会很吃力。
nginx 确实就是用的 openresty 😂
有做 ELK 日志分析,请求的耗时大部分在 300ms 以下,最高的一个接口耗时平均 2 秒,正打算把个接口分出去单独做。
我的 CPU 是 8 核,是说只要是小于 8,就是正常?
谢谢回复,现在瓶颈不在内存,web 服务器每台的内存占用 3GB 还不到(每台 16GB)。
这个看起来真不错,可惜我现在用的是 mysql,下次用试试,多谢。
多谢,这个似乎就是解决这个问题的切入点,我研究下。
谢谢回复,这个的只是在 redis 里存一个 key/value 键值,而不是在 Redis 的 HASH 里存键值。 我的问题是怎样方便地在 redis 的 hash 里存键值,并且取出来的时候能正常还原成 activerecord 对象。
谢谢,目前 mysql 和 redis 是在同一台单独的服务器上,我测一下看看效果。
谢谢,slc 似乎不能只指定某一个关联启用缓存,而是给 Model 的所有二级关联启用缓存了。
对,就是这种方式,应该是利用这个东西直接写入 elasticsearch,我目前是用 rails 配置 logstasher 这个 gem 往 logstash 里面写的。
能不能不使用 logstash,直接使用 beats?
我是在这个推(https://twitter.com/ggarlic/status/913752201457102850beats了。)里看到这个人只用
但不知道怎么用。
默认不加参数的 datetime 后面并没有小数,mysql 5.7,刚测试给uuid
和created_at
加联合唯一索引,用批量插入语句,uuid
和created_at
一样的情况下,触发了Duplicate entry '96f2bfe9-3ed2-4721-a7c8-57185e283fc2-2017-06-08 19:39:41' for key 'uuid_created_at'
。
说明是可用的办法。
同时发生的两次请求,完全是一样的,并没有注册途径的区分。
created_at 的类型是 datetime,精度应该就是秒吧?
在缓存里设置 uuid 肯定不行,同一秒发生的请求,缓存也会同时两个一起查和写,
因为如果不强制的话,有的客户端会在 post 请求里面把参数用 query 传过来,导致以后遇到意想不到的 bug,比如参数里面包含&
字符等等。
再就是客户端这样使用也不符合规范。
@will_c_j @ForrestDouble 实际使用中 sidekiq-cron 要更好一些,因为每个任务不用新起一个 rails 环境,任务的执行速度会快很多,而且每个任务是压入队列一个一个执行,不会出现像 whenever 那样如果同一时间触发了多个任务,内存有可能爆满的情况。
谢谢回复,确实实际项目中影响速度的因素很多,如果是这样的结果,目前来看我还是会用 Rails。
昨晚看完这个视频就在社区里翻了翻 elixir 相关的贴子,感觉很值得学习了解一下,打算近期抽时间学习用 phoenix 做个小应用试试。
crontab 能实现整数分钟的定时执行吗?我现在用的是 sidekiq-cron,我还是试试先。
这个表比较独立,除了查询时有关联(比如关联用户),没有涉及到 回调 或者 更新 Counter Cache 字段 这样的动作,我先按 @hooopo 的方案改一下试试,多谢。
多谢,我本来还打算用队列,看来还是要手动处理比较好,bulk insert 肯定比队列还要快,感觉这样可行,我先试试这样,再次感谢。
好的,我来找个试试,在这之前我先优化一下表的索引,把不必要的去掉,多谢。
请问用什么方法具体去分析?
谢谢回复,没关系,我的需求里在分组时,只需要算分组后每组数据有多少条,或者某个数值字段的总合,所以分组正合适的。
是我之前把概念搞错了,所以错用了 distinct。
谢谢回复,我的项目里 users 和 logs 是在不同的数据库里,所以不能用 join
我的需求是让记录按我要求的字段去重后可以正常分页。现在看来不能用 distinct,还是用 group 比较好。