newrelic 计算 external service 调用是通过检测 Net::Http 的代码调用,如果你调用另外一个 api,不是通过 net http(比如说是 socket),是不会统计在 external 里面的。
你可以在本地环境模拟,或者加一下日志,看代码执行到底耗费在哪里。
对Grape不了解呢,是不是将这个api里面执行ruby代码的时间都算到了Rack::ContentLength#call里面?
翻译好赞!! 猜测性能的提升 node.js http parser 要占比较大的因素,unicorn 应该也可以用这个 parser。 另外,在实际项目中 app server 耗时在整个应用里面占很少的比重,提升效果有限。
晚上访问的时候,页面出来有点慢,F12 看了一下,css/js 等文件没有 gzip?
表结构一般都是为了 OLTP 优化设计的,千万级别的数据,如果查询无法有效利用索引,或者需要 scan row 数量过大,PostgreSQL 和 MySQL 都无法提供很好的性能。用 OLAP 吧。
有成熟的 gem 可以用:
昨天在北京遇到了@Kgen 真人,才发现是壕...
是俄罗斯方块游戏的延伸吧?给你固定的积木条,去填充棋盘,唯一不同的是 Tetris 是用 4 块积木组成的积木条,而你这个问题是用 5 块积木。
还好,我们的招聘启事中枪比较少...
imagemagick 对 jpeg 格式所有操作都是会重新压缩的,如果照片本身带的 meta 信息很少或者没有,然后照片本身用的压缩表和 imagemagick 不一样(比如是相机和手机拍摄),是有可能会导致 strip 以后的尺寸会稍微变大。
以前遇到过这个问题,用这个照片为例子,strip 以前是 458365
strip 以后,变成了 468814,反而变大了 10K 左右
肉眼看不出来有什么区别,但是如果你生成 2 者的区别图 compare 3347.jpg 3347-strip.jpg diff.jpg
会发现边缘是有差异的
按照你的写法会输出 Access denied for user 'xxx'@'localhost' (using password: YES) 说明已经捕捉到错误了
你原先的写法没问题啊,你说的不能捕获到异常是指什么?
我一般去这里查: http://rubydocs.org/
还可以下载和 Rails 的文档打包下载一个离线版本,在本地查询很快的。
我在之前的项目中对比过直接使用 nginx 做静态缓存和 nginx + varnish,后者没有任何优势(速度,内存,架构简洁),有兴趣的话,你们可以对比测试一下。
另外如果是你提到监控 CDN 节点的需求,我以前的写过代码是扩展一个 resolv, 能够自定义域名的解析,这样会灵活很多,也是参考了 ruby 本身的代码 lib/resolv-replace.rb,这样就不需要强制设置 Host 和 IP,代码也会简洁很多。
这个是 SNI 的原因,net/http.rb 的代码里面有这样一段,会将你传入 url 里面的 ip 设置为 hostname:
# Server Name Indication (SNI) RFC 3546
s.hostname = @address if s.respond_to? :hostname=
然后你后续请求的 host 又是通过 header 改变的,一些 web 服务器可能会认为是非法请求,返回了 400 的状态码。 SNI 是在 ruby 2.0 以后加入的,你可以将这行代码去掉试试看,来验证一下是不是 SNI 的问题。
在这里讨论习题可以吗? one line 风格: 第一题
def avg array
array.size > 0 ? array.reduce(:+).to_f / array.size : 0
end
第二题没看懂题目,汗一个... 3 个数组的测试用例没看明白,和我理解的题目不一样,求更多的测试用例,比如说 3 * 5 这样的矩阵
第三题
class Numeric
def method_missing method, *args, &block
if i = [:g, :kg, :t].index(method) then self * 1000**i else super end
end
end
第四题
def parse string
string.gsub(/\#\{(.*?)\}/){eval $1}
end
第五题 明显不能用一行解决,我匿了...
slim 默认将所有模板中的空格都去掉了,你可以通过设置来关闭这个选项: Slim::Engine.set_default_options pretty: true 或者是修改 span 的 css,添加 margin
#26 楼 @hooopo 看 RVM 文档: http://rvm.io/integration/cron 如果你懒的看文档,遇到问题了,google 一下就有了,我并不觉得这是坑
#26 楼 @hooopo 看 RVM 文档: http://rvm.io/integration/cron 如果你懒的看文档,遇到问题了,google 一下就有了,我并不觉得这是坑
在服务器上用了 N 年 RVM 了,没发现什么问题,优点:
唯一缺点: cron / upstart 等运行 ruby 相关脚本时,需要在脚本添加 source rvm 的 enviroment 文件: source /home/xxx/.rvm/environments/ruby-xxx 或者用 wrappers 执行,包括升级版本以后,也要修改这个脚本的 xxx 匹配到最新版本,不过话说回来,就执行一下 sed 搞定的事情,也没有太麻烦,和优点相比,完全可以忽略
如果规则简单,可以做一个 web 界面,只接受 service 名字和 ip,然后动态修改 nginx 的配置文件,发送 HUP 信号,让 nginx 无缝重启,我以前往 upstream 里面添加或者减少 ip,实现 auto scale up/down就是这样来做的
#5 楼 @hz_qiuyuanxin 用 uid 作为 queue name Sidekiq::Queue['queue_name_' + uid].limit = 1