Nginx 优化中在 Nginx 侧 和 Linux 系统侧必须要调整优化的参数详细和最佳推荐配置

Nginx 必须要调整优化的参数 Nginx Server 侧必须要调整的参数 Nginx 必须要调整的参数以及线上推荐的最优配置: 建议其他调整的参数: Linux 系统侧必须要调整的参数 网卡软中断绑定 Nginx 的机器,一般都是独立的机器,因此不建议采用默认 irqbalance 的自动绑定,而是要设置 smp_affinity、smp_affinity_list 的值来自动绑定。 非常关键的一点,就是不能重复绑定,网卡队列和 CPU 一定要一对一绑定,一般来说就是一个队列要绑定一个 CPU。对于万兆网卡,如果队列数超过了 CPU 核数,那么我们可以把网卡队列数调整为 CPU 核数,然后一对一绑定;一定要注意,通过 一个网卡队列需要并只能绑定到一个 CPU 上,不能绑定到多个 CPU 上,否则不会生效。 Linux nf_conntrack 参数 Linux nf_conntrack 是 Linux 网络相关的核心参数,sysctl 可以查看 conntrack 相关的所有数据: backlog 队列 Nginx 机器的推荐设置如下: fs 文件描述符 port 端口

Nginx 惊群的原因和解决方案

Nginx 惊群的原因 所谓惊群现象,简单的来说就是当多个进程或线程在同时阻塞等待同一个事件时,如果该事件发生,会唤醒在等待的所有的进程/线程,但最终只可能有一个进程/线程对该事件进行处理,其他进程/线程会在失败后重新休眠,唤醒多个进程/线程这种不必要的行为会造成系统资源的浪费(涉及到进程的上下文切换)。而常见的惊群问题有accept惊群、epoll惊群。 accept 导致的惊群问题 当多个进程/线程调用accept监听同一个socket上时,一个新连接的到来就会导致所有阻塞在该socket上的进程/线程都被唤醒,但是最后只有一个进程/线程可以accept成功,其余的又会重新休眠,这样就产生了惊群现象。 这个问题其实在linux2.6内核版本就已经解决了,它维护了一个等待队列(队列的元素为进程),并且使用了WQ_FLAG_EXCLUSIVE标志位(互斥标志位),非exclusive元素会加在等待队列的前面,而exclusive元素会加在等待队列的末尾,当有新连接到来时,会遍历等待队列,并且只唤醒第一个exclusive进程(非互斥的进程由于排在队列前面也会被唤醒)就退出遍历。 阻塞在accept上的进程都是互斥的(也就是WQ_FLAG_EXCLUSIVE标志位会被置位),因此现在的linux内核调用accept时,多个进程/线程只有一个会被唤醒并建立新连接。 而nginx中处理的主要是另外一种,epoll导致的惊群问题(确切的来说,是解决多个epfd(epfd是指调用epoll_create获取的描述符)共同监听同一个socket造成的惊群问题)。 epoll 导致的惊群问题 虽然accept上已经不存在惊群问题了,但是以目前的服务器架构,都不会简单的使用accept阻塞等待新的连接了,而是使用epoll等I/O多路复用机制。早期的linux,调用epoll_wait后,当有读/写事件发生时,会唤醒阻塞在epoll_wait上的所有进程/线程,造成惊群现象。不过这个问题已经被修复了,使用类似于处理accpet导致的惊群问题的方法,当有事件发生时,只会唤醒等待队列中的第一个exclusive进程来处理。不过随后就可以看到,这种方法并不能完全解决惊群问题。 这里需要区分一下两种不同的情况(这两种情况,目前linux内核都有处理的办法)。  其实也就是epoll_create和fork这两个函数调用的先后顺序问题(下面都以进程为例)。第一种情况,先调用epoll_create获取epfd,再使用fork,各进程共用同一个epfd;第二种情况,先fork,再调用epoll_create,各进程独享自己的epfd。 而nginx面对的是第二种情况,这点需要分清楚(网上有很多用第一种情况来引入nginx处理惊群问题的方法,不要被混淆了)。因为nginx的每个worker进程相互独立,拥有自己的epfd,不过根据配置文件中的listen指令都监听了同一个端口,调用epoll_wait时,若共同监听的套接字有事件发生,就会造成每个worker进程都被唤醒。 Nginx 惊群问题的解决方法 Nginx 目前有几种方法解决惊群问题:

Nginx TCP backlog 分析优化和性能相关经验汇总

Nginx TCP backlog 分析和优化 1,Nginx TCP backlog 配置说明 Nginx TCP backlog 配置,如果是同一个 listen 端口,设置一次就好;比如有多个 server, 每个 server 都是监听 80 端口,只需要给一个 80 端口设置 backlog 就好,一般我们会有一个 default server,在default server 的 80 端口上设置 backlog 的值就可以了;设置好了之后,可以通过 ss -lnt 查看。 backlog 配置多少合适 ?推荐的 Nginx 的经验值是 4096 or 8192,当然,你也可以配置为好几万(一般不用),具体要看是否真有那么多 accept 队列。 2,Nginx backlog 队列满的排查和优化 ListenOverflows、ListenDrops 如果 accept 队列满了,那么就会导致 Read more…

谷歌商店 Google Play 土区 入门使用指南(含付款、币种、切换付款账号等问题)

前言 谷歌和苹果商店在某些情况下可通过换区达到低价购物、订阅的效果,这次趁着TG土区骨折来学习一下如何从零入手谷歌土区。 本教程中的土区指的是 TR 土耳其区。你可能需要准备一张 V/M/A卡片来进行付款(支持大陆卡,也支持美国卡等,账单地址自选),同时为了访问可能需要国际IP/土耳其本地IP进行。 谷歌商店 vs 苹果商店 苹果商店由于有中国大陆特供版,所以有不少应用可以跨区内购,但是苹果是锁发卡地的且需要在老区下载好App后切区才能内购。而谷歌需要一个小号(不推荐用大号,避免被锁区)新建一个付款资料,然后来进行购物。 使用谷歌商店要注意,信用卡风控可能较高,被拒时可考虑试试预付卡、借记卡,如果是英美有AVS的可以考虑更换其他地区的卡片。同时谷歌不要买礼品卡了,现在的谷歌商店使用礼品卡就是送人头,经常付不出来(苹果相反,卡片难,锁土卡,而礼品卡起飞) 入门 首先最好准备一个,没有下载过app(没有付款资料)且注册有一定时间的谷歌账号。 如果是没付款资料的,则打开 https://pay.google.com/ 会如图所示   你需要添加一张卡以创建付款资料,加卡前不可选区,如果要直接土区付款资料,就必须账单地址填写土耳其地址 如果是老号,则会如图所示,直接选区后再操作 支付方式和税务 土耳其类似美国,部分地区免税,部分地区有税,建议自己搜索下哪些土区是免税的。 支付方式在这里只能卡,不能用pp什么的,也别用余额消费     土耳其地址  ==>  展开 / 收缩     中国大陆地址  ==>  展开 / 收缩     美国地址  ==>  展开 / 收缩     香港地址  ==>  展开 / 收缩 这里的地址指的是卡片账单地址,可以和土区不同,也可以相同。如果是土、港地址则只能VMA卡,如果是中美地址还支持DJ卡组织。(中国大陆62银联信用卡有概率被识别为Discover信用卡,这个不大确定,可以尝试) 绑定卡片后会验证不超过2USD的扣款,土区地址则是2TRY,大概0.12USD。【这种商户不同的可能不支持一次性虚拟卡和单商户虚拟卡,比如Revolut和CapitalOne】 然后你可以在安卓设备的付款方式中检查添加的状态。 使用 由于老设备使用时会遇到以下这些问题,分小节讲解 付款按钮显示Loading 谷歌商店显示最新但是不是最新版 付款时跳出的弹窗账号不是想用的土区账号 付款按钮显示Loading 该问题一般是你的谷歌商店没有更新,你需要更新Play商店 谷歌商店显示最新但是不是最新版 比如如图所示,显示版本是21版,结果告诉我是最新的,可去第三方源下载覆盖即可。比如去 Apkpure下载。 目前最新应该是31版本。更新后即可显示付款按钮的数据。 付款时跳出的弹窗账号不是想用的土区账号 该问题的根本原因是下载App的账号是另外一个号而不是你的土区新号,可参考下一大节的解决方案。 谷歌商店修改为土区账号付款的解决方案 Google Play Read more…

Google One 订阅 图文教程 每月2元人民币即可获得2TB云存储空间 并且获得不限流量VPN

关于 Google One Google One是由Google开发的一项订阅服务,提供扩展的云存储,面向消费者市场。 Google One付费计划提供从100GB起的云存储空间,最高可达30TB,这是对免费的15GB Google 帐户存储空间的扩展,该存储空间可在Google云端硬盘,Gmail和Google相册之间共享。 Google One 取代了 Google Drive 的付费服务,以强调该程序被多个 Google 服务使用的事实。用户无法访问该程序的原始存储,但可以通过 Gmail,Google 云端硬盘和 Google 相册添加和删除电子邮件、文件和图片。 一、Google One 的权益 下图为美区价格,其他地区不包含 Google VPN,但价格更低。 Google VPN 不可自选地区,默认匹配连入地区的 IP,例如使用美国 IP 连接,Google VPN 即为美国 IP。 那为什么我有境外 IP 了,还需要它?因为,Google VPN 具有更好的连接性,可以稳定解锁其支持地区大多数的流媒体(如果你买了一个不能解锁的代理,可以用来套娃)。Google VPN 还能用来注册 Google Voice 可知 IP 的纯净程度。。。 二、如何低价订阅 Google One Read more…