Month: 3月 2019

多线程的文雅介绍 – 走近并发的世界,一步一个脚印。

现代计算机能够同时执行多个操作。在硬件改进和更智能的操作系统的支持下,此功能使您的程序在执行速度和响应速度方面运行得更快。

编写利用这种功能的软件既迷人又棘手:它要求您了解计算机引擎盖下发生的情况。在第一集中,我将尝试划分线程的表面,这是操作系统提供的工具之一,以执行这种魔术。我们走吧!

最后更新于 2019年3月21日 …

网页的图片,js ,css ,视频 都加 http accept-ranges头,以提高性能

网页的图片,js ,css ,视频 都加 http accept-ranges头,以支持多线程加载,断点续传,提高性能!目前各大网站都在使用此方式!

nginx 设置为:

server {
  listen 80;
  server_name p2hp.com;
  location ~ ^/(img/|js/|css/|upload/|font/|fonts/|res/|video) {
    add_header Access-Control-Allow-Origin *;
    add_header Accept-Ranges bytes;
    root /var/www/...;
    access_log off;
    expires 30d;
  }
  ...
}

                    

互联网项目中mysql应该选什么事务隔离级别

摘要

企业千万家,靠谱没几家。
社招选错家,亲人两行泪。

祝大家金三银四跳槽顺利!

引言

开始我们的内容,相信大家一定遇到过下面的一个面试场景

面试官:“讲讲mysql有几个事务隔离级别?”
你:“读未提交,读已提交,可重复读,串行化四个!默认是可重复读”
面试官:“为什么mysql选可重复读作为默认的隔离级别?”
(你面露苦色,不知如何回答!)
面试官:"你们项目中选了哪个隔离级别?为什么?"
你:“当然是默认的可重复读,至于原因。。呃。。。”
(然后你就可以回去等通知了!)

一文读懂HTTP/2 及 HTTP/3特性

前言

HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一。

虽然 HTTP/2 提高了网页的性能,但是并不代表它已经是完美的了,HTTP/3 就是为了解决 HTTP/2 所存在的一些问题而被推出来的。…

        

Nginx 多进程架构和惊群问题

Nginx 多进程架构是:一个master进程和多个worker 进程。
一个worker 通过非阻塞式论询,可维护数千个连接,多个worker共享一个监听套接字.

Master进程

顾名思义,老板进程,主要负责有轻而巧的工作.
主要通过进程间通信对工人进程发号施令或是处理来自bash的start,stop,reload等用户指令。

Worker 进程

顾名思义,工人进程,主要负责重而笨的工作,主要负责处理来自浏览器的连接。
网站高并发情况下,巨大的工作负荷都是压到工人进程,老板进程在一旁观看指挥。

在TCP Socket 服务开发中,多进程或多线程共享监听套接字时面临惊群问题.

  1. 对于主流的linx版本, accept 阻塞调用,已经不存在惊群问题.
    也就是说多个进程同时accept 同一个 监听套接字,只有一个进程获的连接.
  2. 对于epoll_wait 非阻塞式的创建连接方式, 存在惊群问题。(即:一个连接请求唤醒多个worker 进程).

Nginx 在linux系统中使用epoll_wait 非阻塞式的方式,存在惊群问题。

浏览器的请求连接不经过master进程,直接由worker 进程处理,
但是一个请求如何分配到特定的worker进程?

  1. nginx 默认的配置accept_mutex on;
    多个worker 进程通过争锁获得连接,同时只有一个worker获得连接。
    工人进程抢着活干(让我来,别和我争)
  2. accept_mutex

Nginx开启一个参数就能让你的WEB性能提升3倍

一、遇到的一些问题

记得 2008 年做性能测试的时候,新进7台 lenovo 4核4G 服务器用于性能测试。

当时资源紧张,这7台服务器都装了双系统(Win2003/CentOS5)空闲时用于做测试机(压测的Agent)。

当时给Nginx做了一系列测试,印象很深的是:在这批机器上,Nginx状态页面的压测。

短连接的话最佳QPS约4万,长连接的话最高QPS约13万。…

        

为nginx动态模块创建可安装包

编辑 - 这篇文章是关于使用NGINX和NGINX Plus的第三方动态模块的两部分系列的一部分。

  • 第一篇文章提供了编译第三方动态模块的逐步说明,这些模块可以在运行时由NGINX或NGINX Plus加载。
  • 本文提供了用于为生产环境自动化第三方动态模块构建的指导和工具。它解释了如何为包含版本依赖性检查的第三方动态模块创建可安装包。

NGINX 1.11.5和NGINX Plus R11引入了对独立于NGINX本身编译动态模块的支持。这允许NGINX和NGINX Plus的用户使用NGINX,Inc。存储库中的官方版本并加载他们需要的动态模块。动态模块有几个来源:…

为NGINX和NGINX Plus编译第三方动态模块

本文是关于使用NGINX和NGINX Plus的第三方动态模块的两部分系列的一部分。

  • 本文提供了编译第三方动态模块的逐步说明,这些模块可以在运行时由NGINX或NGINX Plus加载。
  • 第二篇文章提供了指导和工具,用于为生产环境自动化第三方动态模块构建。它解释了如何为包含版本依赖性检查的第三方动态模块创建可安装包。