Debian 开启BBR TCP加速

BBR 已经出来将近半年了。 它解决问题的出发点在于:

  • 在有一定丢包率的网络链路上充分利用带宽,最大优化网络速度.。
  • 降低网络链路上的 buffer 占用率,从而降低延迟。

关于 BBR 加速原理的细节,可以参考知乎这篇文章,讲的很详细。《Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?》

这篇文章我记录一下开启过程。事先提个醒,在生产环境中不轻易升级内核。就我实践的结果,这次升级把我的Docker搞坏了,服务无法启动。

安装

Kernel.Ubuntu.com找到版本号文件夹,amd64 的 linux-image 中含有 generic 这个 deb 包的。以我Debian 64位的系统,于是安装过程如下:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10/linux-image-4.10.0-041000-generic_4.10.0-041000.201702191831_amd64.deb
dpkg -i linux-image-4.9.6-040906-generic_4.9.6-040906.201701260330_amd64.deb

安装完成后重启。

开启BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

sysctl -p

如果以下命令输出有bbr,那么已经成功开启BBR.

sysctl net.ipv4.tcp_available_congestion_control

如果以下命令输出有tcp-bbr,那么BBR正在运行.

lsmod | grep bbr

Jekyll 使用技巧

这篇文章大部分转载自《48 个你需要知道的 Jekyll 使用技巧 - crispgm.com》,有修改

简介

什么是 Jekyll

Jekyll 是一个简单的,博客感知的,静态网站生成器。

安装

首先,你得有 Ruby。对于 Mac 用户,可以使用 Homebrew 安装。

brew install ruby

然后:

$ gem install jekyll

Bundler

Jekyll 3.3.0 之后开始采用 Bundler 方式运行。安装时,需要同时安装 Bundler:

$ gem install jekyll bundler

所以所有命令可能也需要使用 Bundler:

$ bundle exec jekyll serve

祭十二郎文 韩愈

《祭十二郎文》是唐代文学家韩愈的一篇对其侄十二郎的祭文。文章既没有铺排,也没有张扬,作者善于融抒情于叙事之中,在对身世、家常、生活遭际朴实的叙述中,表现出对兄嫂及侄儿深切的怀念和痛惜,一往情深,感人肺腑。

原文

年、月、日,季父愈闻汝丧之七日,乃能衔哀致诚,使建中远具时羞之奠,告汝十二郎之灵:

呜呼!吾少孤,及长,不省所怙,惟兄嫂是依。中年,兄殁南方,吾与汝俱幼,从嫂归葬河阳。既又与汝就食江南。零丁孤苦,未尝一日相离也。吾上有三兄,皆不幸早世。承先人后者,在孙惟汝,在子惟吾。两世一身,形单影只。嫂尝抚汝指吾而言曰:“韩氏两世,惟此而已!”汝时尤小,当不复记忆。吾时虽能记忆,亦未知其言之悲也。

吾年十九,始来京城。其后四年,而归视汝。又四年,吾往河阳省坟墓,遇汝从嫂丧来葬。又二年,吾佐董丞相于汴州,汝来省吾。止一岁,请归取其孥。明年,丞相薨。吾去汴州,汝不果来。是年,吾佐戎徐州,使取汝者始行,吾又罢去,汝又不果来。吾念汝从于东,东亦客也,不可以久;图久远者,莫如西归,将成家而致汝。呜呼!孰谓汝遽去吾而殁乎!吾与汝俱少年,以为虽暂相别,终当久相与处。故舍汝而旅食京师,以求斗斛之禄。诚知其如此,虽万乘之公相,吾不以一日辍汝而就也。

去年,孟东野往。吾书与汝曰:“吾年未四十,而视茫茫,而发苍苍,而齿牙动摇。念诸父与诸兄,皆康强而早世。如吾之衰者,其能久存乎?吾不可去,汝不肯来,恐旦暮死,而汝抱无涯之戚也!”孰谓少者殁而长者存,强者夭而病者全乎!

呜呼!其信然邪?其梦邪?其传之非其真邪?信也,吾兄之盛德而夭其嗣乎?汝之纯明而不克蒙其泽乎?少者、强者而夭殁,长者、衰者而存全乎?未可以为信也。梦也,传之非其真也,东野之书,耿兰之报,何为而在吾侧也?呜呼!其信然矣!吾兄之盛德而夭其嗣矣!汝之纯明宜业其家者,不克蒙其泽矣!所谓天者诚难测,而神者诚难明矣!所谓理者不可推,而寿者不可知矣!

虽然,吾自今年来,苍苍者或化而为白矣,动摇者或脱而落矣。毛血日益衰,志气日益微,几何不从汝而死也。死而有知,其几何离;其无知,悲不几时,而不悲者无穷期矣。

汝之子始十岁,吾之子始五岁。少而强者不可保,如此孩提者,又可冀其成立邪?呜呼哀哉!呜呼哀哉!

汝去年书云:“比得软脚病,往往而剧。”吾曰:“是疾也,江南之人,常常有之。”未始以为忧也。呜呼! 其竟以此而殒其生乎?抑别有疾而至斯极乎?

汝之书,六月十七日也。东野云,汝殁以六月二日;耿兰之报无月日。盖东野之使者,不知问家人以月日;如耿兰之报,不知当言月日。东野与吾书,乃问使者,使者妄称以应之乎。其然乎?其不然乎?

今吾使建中祭汝,吊汝之孤与汝之乳母。彼有食,可守以待终丧,则待终丧而取以来;如不能守以终丧,则遂取以来。其余奴婢,并令守汝丧。吾力能改葬,终葬汝于先人之兆,然后惟其所愿。

呜呼!汝病吾不知时,汝殁吾不知日,生不能相养以共居,殁不能抚汝以尽哀,敛不凭其棺,窆不临其穴。吾行负神明,而使汝夭;不孝不慈,而不能与汝相养以生,相守以死。一在天之涯,一在地之角,生而影不与吾形相依,死而魂不与吾梦相接。吾实为之,其又何尤!彼苍者天,曷其有极!自今已往,吾其无意于人世矣!当求数顷之田于伊颍之上,以待余年,教吾子与汝子,幸其成;长吾女与汝女,待其嫁,如此而已。

呜呼,言有穷而情不可终,汝其知也邪?其不知也邪?呜呼哀哉!尚飨!

Laravel Eloquent 左联时进行筛选

在 laravel Eloquent ORM 中我们经常用到 with 这一方法来关联表。普通的使用场景也很简单,例如

class Talent{
    public function account()
    {
        return $this->belongsTo('App\Models\Account', 'account_uuid');
    }
}

使用 Talent::with(‘account’) 就可以获取到关联数据。如果希望左联查询,可以在行内使用如下语句实现:

$yesterdayCreateTalent = Talent::with(['account' => function ($q) {
  $q->yesterday();
}])->get();

也可以拆分方法进行使用。

// Talent
public function test()
{
   return $this->belongsTo('App\Models\Account', 'account_uuid')->yesterday();
   // or
   // return $this->account()->yesterday();
}

Laravel Eloquent 使用 groupBy 获取每个group的数据和

最近写到相关的代码,直接上代码做个记录。

public function scopeUserSum($query)
{
    return $query->groupBy('username')->selectRaw('sum(data) as sum, username')->orderBy('sum', 'desc');
}

如果只是纯粹求一列的和,在builder上直接用sum即可。

参考资料


1 2 3 4 5 6 26 27 28 29 30