惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
罗磊的独立博客
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
量子位
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
B
Blog RSS Feed
腾讯CDC
博客园_首页
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
博客园 - Franky
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
D
Docker
P
Privacy & Cybersecurity Law Blog
S
Securelist
V
V2EX
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
The Hacker News
The Hacker News
Microsoft Azure Blog
Microsoft Azure Blog
AWS News Blog
AWS News Blog
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Cloudbric
Cloudbric
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recorded Future
Recorded Future
V2EX - 技术
V2EX - 技术

方永、南天紫雲

linux透明代理 技术的边界 停机问题通俗说明 学习能力的增长 微信调试的原语 mac外接移动硬盘安装ArchLinux linux的死机问题 linux下全键盘操作 漂亮又好用的bspwm linux本机透明代理 ssh、mosh、autossh linux不能待机又一例 从WordPress切换到Hugo 折腾电脑开机 linux系统QQ新思路 Arch Linux的字体渲染 svn管理之submin OpenWrt自动fucking墙記錄 二维码(qrcode)名片的一些事儿 用lua nginx module搭建一个二维码(qr code)生成器 CentOS 7 安裝註記 php程序連接MySQL时只能127.0.0.1而localhost無法連接的問題 ThinkPad之FAN_ERROR、hi fi聲卡 jetty多端口部署 OpenWrt簡單暴力限網 linux中cron之PATH变量 OpenWrt的WDS無線橋接模式 再敘OpenWrt下的rtl8187無線中繼 sed之模擬tail 終端進化之二零一三 linux下的郵件服務器:postfix_dovecot_roundcube 一次性密碼/動態口令卡原理 xl2tp之VPN靜態地址分配 rtl2838U2832试用记 linux中pptp协议VPN搭建 glances监控工具安装 CentOS6.4硬盘安装 Debian Wheezy硬盤/U盤安裝小記 Kirby小試 zsh shell怎么打开常用的目录? OpenWrt SSH免密码使用密钥登录 linux中的vsftpd的匿名(anonymous)用户配置 無光驅無USB無軟驅,怎麼修復硬盤MBR? 那些個人網站 linuxFreeBSD下的dnspod动态域名客户端 Windows系统盘的32K之殇 一枚Chrome插件引起的大量磁盤IO問題 用批處理切換網卡的IP(適用Win7、Win8) Windows中的DHCP服务器 Win8啓動時出現“您的電腦需要修復”問題的解決辦法 Windows8睡眠(待机)模式异常处理 最强大好用而又小巧的计算器 Windows8運行不能保存歷史命令 Win8下的红警2尤里复仇 为cmd添加readline,如Bash Shell般使用cmd 手动添加修改win8 win+x菜单 Win8運行卸載程序時提示2503之解決一法 烽火HG110提权一法 缓解眼疲劳有效的办法 mintty乱码解决办法 糟糠美妾 免费易用的Win8 ArchLinux的類box環境音量調節二三事 使用OpenWrt与curl挂QQ OpenWrt的安全 OpenWrt BCM63xx rtl8187使用注意事项 Arch Linux之systmed使用简介 Archlinux 2012.07.15之后发布的镜像新手安装完全向导 FreeBSD 9.0 安装简记 记一由FreeBSD引发的午夜惊魂 Jekyll or handmade wi-fi无线破解过程与原理简要介绍 修复QQ影音异常卸载后的文件关联 吐槽一下000webhost 为OpenWrt的luci Web界面加速 最小的sed for Windows linux的磁盘自动挂载 OpenWrt中crontab -e的使用 sddns(dnspod client for OpenWrt)使用说明 OpenWrt中vsftp添加新用户 php+markdown写博客 linux arp防火墙之p2p终结者 墙外的世界很精彩 OpenWrt使用dnspod的动态域名解析(ddns)功能 OpenWrt架设nginx php网站 openwrt架设uhttpd+php+sqlite网站 vim自动跳到上次离开的光标位置 OpenWrt无线中继配置文件 修行八支 漫步者R201T打摩升级改造 阿里(Ali)3328系dvb接收机软件升级方法 db120刷OpenWrt固件并使用ppp方式ADSL拨号 移动短信助手 chrome tips一则 cdate,显示中国传统农历日期 更改硬盘模式为AHCI后Windows及linux的调整 使用grub2加载软盘和光盘镜像 电脑用数据线连接手机上网 电脑通过蓝牙连接手机GPRS上网 我与我的语言
Rust与oracle、redis集群的纠结
zola · 2018-01-26 · via 方永、南天紫雲

最近用 rustRocket web框架做了一套api接口,记录一下遇到的问题。

一個年底活動的項目,前後端分離,後端以json api的形式與前端交互。

後端也就幾張表,幾個前端接口,但是接入了 5 類接口,且有3類在內網,2類使用java生態的協議,dubbo和hessian,項目時間很緊張, 沒時間去分析實現這倆協議,用java做了轉接。

數據庫是oracle db,rust的oracle驅動crate倒是有幾個,最後用了mimir,這個基於odpi的庫除了調試信息不多,沒guide文檔外, 其它還算好,也封裝了odpi的連接池,但文檔裏沒說明這個不是線程安全的,將pool作爲rocket的guard,編譯沒有問題,運行時經常 get_connection失敗,用wrk加點壓力,然後隨機coredump,好吧,換用單鏈接吧。由於只是驅動,所以操作都是拼sql語句,做了 個trait,復用從一個查詢裏取結果並查詢每列的結果等等這些瑣碎的操作吧。

然後上準生產,操作系統是redhat6,本機編譯的二進制glibc太老,跑不起來,編譯新版本的glibc並加載,運行時coredump,在這臺服務器編譯, 報一堆錯誤,看到由一個名爲ring的crate引起,這個庫被cookie依賴,cookie被rocket依賴,在Cargo.toml裏patch cookie,ring的 依賴並沒有去除,分支rocket並patch rocket,生效。吐槽一下ring,一是鎖定rustc版本,一是鎖定gcc版本,大家寫代碼是要上生產的,不是 玩兒的,ring的作者你太任性了!去除了ring的依賴,順利編譯完成。

但是,運行時又會有moved的報錯,一看原來準生產redis是集羣,crate redis並不支持集羣方式,找到redis-cluster,用之,建立連接時有錯, 分析並patch,第二天前端反應接口超慢,一開始以爲oracle調整了,各種排查,到下午打日志,看到redis的get請求居然有幾十秒,WTF,換用 td_rredis,世界清靜了。

然後上生產,老是auth required,redis的password是配置了的,於是忍受着堡壘機後面的生產服務器的龜速,打日志,好吧,三主三從,只給三主 配了密碼,其它的還得加。終於上線了,happy。

領導看了,提出意見,改,再上線。

上線時,居然實例一直超時,有很多請求,但也不至於啊。。。 使用openresty將前端的index代理了,ok了。 再看統計數據一天十來萬的注冊量,還行,qps應該不低,那就得找找index的原因了。

而這一切,都發生在幾天的時間裏。尤其是ring的問題,程序都寫好了,跑不起來,都可以讓人懷疑人生了。

總結一下,時間是一個致命點,太短的時間,太多的問題,這個劑量的壓力足以搞死一頭牛。 rust的crate是另一個坑,去crates.io想給ringredis-cluster差評,無奈並沒有這個功能。那麼應該會有人前赴後繼地掉坑吧。

2017年博客只寫了一篇水文,這篇本來也不想寫的,怕2018一篇都沒有,聊充個數吧。