Ruby China
  • Topics
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • Sign Up
  • Sign In
wxianfeng
@wxianfeng
VIP
NO. 132 / 2011-11-18

Alibaba Inc.
北京
2 Topics / 158 Replies
14 Followers
0 Following
21 Favorites
/dev/web/ruby
GitHub Public Repos
  • hanzi_to_pinyin 30

    ✍️ Chinese Hanzi To Pinyin, Writen In Ruby

  • hanzi_to_pinyin_node 10

    chinese hanzi to pinyin via node.js

  • exception_log 5

    send rails exception to email and give web ui to watch exception, and it's live stream

  • rake_ui 3

    Rails 3.1 engine that provides a web UI for Rake tasks

  • b2c 2

    b2c website, such as wholesale , E-commerce website

  • pay-ticket 2

    pay ticket by BitCoin

  • rmarshal 2

    Load Ruby marshal data In Lua

  • simple-captcha 2

    captcha for Rails

  • ruby-phoenix 1

    Ruby Client To Run SQL Of Apache Phoenix.

  • false_destroy 1

    when mark a record deleted in DB, then run callback after_false_destroy like after_destroy in rails

More on GitHub
  • Overview
  • Topics
  • Replies
  • Favorites
  • Following
  • Followers
  • 有木有鼠标控 at August 24, 2018

    我用的 罗技 MX Master 2s

  • 这里有多少人用机械键盘? at August 24, 2018

    我用的 Cherry MX Board 8.0 青轴,外观和 Mac 很搭

  • Grape on Rails + Puma 线程安全性的讨论? at July 03, 2018

    @dudu_zzzz 描述下我遇到的问题,

    事情发生在 2016 年 03 月,我们 API 采用 Grape 开发,线上请求量非常大,nginx 阻塞严重,于是把 unicorn 改成了 puma,以提高并发,上线后收到用户反馈,看到了别人数据。。

    刚开始我们一度怀疑是 current_user 问题,最后发现不是这里的问题

    根源是当时对象的 json 序列化用了非 release 版本的 active_model_serializers,其使用了非线程安全的类变量导致,也就是说同时来了两个用户的请求,A 用户 write 的类变量,有可能被 B read 到。。

    当时的 Gemfile 配置: gem 'active_model_serializers', git: 'https://github.com/rails-api/active_model_serializers.git', ref: '2df8804'

    可以直接把 active_model_serializers clone 下来,git checkout 到 2df8804 找到该处代码:

    active_model_serializers/lib/active_model/serializer.rb

    def read_attribute_for_serialization(attr)
      if self.class._serializer_instance_method_defined?(attr)
        send(attr)
      elsif self.class._fragmented
        self.class._fragmented.read_attribute_for_serialization(attr)
      else
        object.read_attribute_for_serialization(attr)
      end
    end
    

    测试代码没发现这个问题?
    测试代码是单线程跑的,不会出现该问题。

    怎么排查到这个问题的 ?
    不同用户并发请求压测,最小原则一步一步注释代码,排除法找到是 active_model_serializers 问题,进一步发现用了类变量。

    教训 ?
    1、不要使用非正式版本的代码,隐患极大。
    2、测试代码要测试多用户并发场景,验证返回的数据。

    供参考,欢迎交流 ~ @dudu_zzzz

  • [北京] 东方网力股份科技有限公司诚招 Ruby 工程师 at January 26, 2014

    顶 豪哥 :D

    @evan127

  • ruby 实时推送 at November 15, 2013

    我在用 nginx-push-stream

  • 谁遇到过 unicorn 传不回数据导致超时的问题 at October 30, 2013

    @ShiningRay nginx 60s 有问题啊,unicorn 处理超过 60s 的话,nginx 就返回 504 了。

  • 阿里员工来往二维码 at October 27, 2013

    来往 经常 秒退 ...

  • Rails 4 中使用 simple_captcha 有没有成功的? at October 19, 2013

    之前也遇到过

    https://github.com/wxianfeng/simple-captcha/issues/2

  • NodeJS 即将超越 Ruby, 正在悄悄改变开源面貌 at September 21, 2013

    @xieren58 看着不错

    nodejs 不觉得活跃啊,我在 cnodejs.org 问了问题,少有人回答 😢

  • NodeJS 即将超越 Ruby, 正在悄悄改变开源面貌 at September 21, 2013

    @xieren58 @nightire promise 我当然知道了. 很多人写的 依然是原生的,因为 nodejs 天生就是利用 callback 来实现异步 io, 事件驱动。不是你用 promise 就能解决异步思维编程方式的。

    让我说 go 的 goroutine, lua 的 coroutine 同步编程写法,轻松实现高并发,写起来舒服多了。

  • NodeJS 即将超越 Ruby, 正在悄悄改变开源面貌 at September 21, 2013

    npm 包增长迅速,得益于 javascirpt 开源库多有关。

    nodejs 异步 callback 写法,会导致嵌套很深,很反人类,也注定只能是小众范畴。

  • 推酷送书活动 at September 21, 2013

    @kafka0102 <c 和指针> 已收到,顺便 show 下我书架,嘎嘎。

    book

  • 推酷送书活动 at September 13, 2013

    @kafka0102 已选,weibo 也帮转了,id 是 wxianfeng, 送两本呗。

  • Ruby 性能真的比 Node 差这么多么? at August 20, 2013

    我在用 ngx_lua 提供 json api, 性能比 node.js 还猛。

  • 有没有江苏的小伙伴 at August 12, 2013

    顶一把,三年前在无锡,现在北漂。

  • User.current 这种用法到底靠谱不靠谱? at August 01, 2013

    用户乱串 我们也遇到过,因为后面的用户复用了之前的线程变量。

    所以应该在每次请求结束后清除线程变量,可以放到 application_controller 中

    after_filter :clear_thread_variable
    
    def clear_thread_variable
      Thread.current[:user] = nil
    end
    
  • [求助] mongodb 老是挂掉,ruby 进程负荷高超时退出,怎么破 at July 04, 2013

    我之前 resque 老是 crash 掉,用了 god 解决的,也许这里可以借鉴下。

  • 日志如何以半天作为分割 at May 17, 2013

    利用 cron 不是很好實現嗎

  • 服务器自动监控并报警. at May 17, 2013

    報警可以使用 nagios, 提醒可以使用 郵件,短信 (飛信,139 郵箱),IM,微信等很多方式...

  • 聊聊 Ruby 中的 block, proc 和 lambda at April 23, 2013

    哈哈,好久不见啊。

    每次我用的时候,都是想到下面这关系 &proc => block

  • 推荐 2 本中高级的 Ruby 书籍 at March 20, 2013

    @yzhang
    http://book.douban.com/subject/3351348/

  • 推荐 2 本中高级的 Ruby 书籍 at March 19, 2013

    我第一本进阶书是 Rails 高级编程 , 有同感的吗?

  • 生成随机字母的精妙代码 at March 07, 2013

    shuffle 中文叫洗牌

  • 多台服务器同步配置文件 at January 06, 2013

    我们也有几台服务器 配置文件都是放在 git 中的,这边 push 别地 pull 就行了,很方便。

  • Ruby China Notifier for Mac 客户端 1.2 发布 at January 06, 2013

    什么语言开发的?

  • 服务器端耗时异常?? at January 06, 2013

    你这监控是啥 new_relic?

  • 请问如何让 date 类型可以和 datetime 进行比较? at January 06, 2013

    统一先 parse 后再比较

  • 自关联该怎么写? at January 06, 2013

    同意楼上 用 NestedSet 模型吧,这个模型太棒了。

  • 总结教训 at January 06, 2013

    说下我们的备份方案: 1, RAID 1 2, 每天夜间 rsync 增量备份 3, 每天夜间 rsync 异地机房备份 4, mysql 主从复制

  • 《Rails3 in Action》真是一本好书! at January 06, 2013

    同感,从 Rails 高级编程 中学了很多招。

  • 1
  • 2
  • 3
  • …
  • 5
  • 6
  • Next
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English