kafka

Posted by 夏泽民

https://www.aaronraff.dev/blog/an-introduction-to-producing-and-consuming-kafka-messages-in-go https://github.com/aaronraff/blog-code/tree/master/an-introduction-to-producing-and-consuming-kafka-messages-in-go https://github.com/felixge/fgprof https://medium.com/@rocketlaunchr.cloud/how-to-benchmark-dbq-vs-sqlx-vs-gorm-e814caacecb5



一次http请求,谁会先断开TCP连接?什么情况下客户端先断,什么情况下服务端先断?

Posted by 夏泽民

总结: (不考虑keepalive)



cgi

Posted by 夏泽民

CGI:即通用网关接口,是一种协议,定义了web服务器和应用程序交互数据的基本格式。例如一个请求发送到nginx后,nginx应该按照CGI协议将请求按照规定的格式处理好后(标准的请求头信息,查询字符串,请求路径等等),然后启用相应的应用程序解析器(php就是php解释器,python就是python解释器),然后把数据传输给解析器,这个时候解析器就可以定位到我们编写的处理代码对请求进行处理,处理完以后按照CGI协议规定的数据格式将结果返回给web服务器,最后退出进程。 fastcgi:fastcgi可以看作是cgi协议的改良版,cgi是通过启用一个解释器进程来处理每个请求,耗时且耗资源,而fastcgi则是通过master-woker形式来处理每个请求,即启动一个master主进程,然后根据配置启动几个worker进程,当请求进来时,master从worker进程中选择一个去处理请求,这样就避免了重复的开启和结束进程带来频繁cpu上下文切换而导致耗时。所以fastcgi也是一种规定了如何实现web服务器和应用程序通信的协议,但是比cgi协议更先进。 通过cgi实现 用户请求http://www.baidu.com?key=码农&platform=linux。 省略一系列DNS解析然后将数据传输到nginx监听的端口上。 nginx根据配置文件判断该请求是否是静态文件,是的话直接从文件系统读取返回给浏览器。不是的话将接收到的数据进行处理(按照CGI或者fastcgi协议规定的格式),提取出请求头,请求参数,资源路径等信息。 nginx通过配置文件启动一个cgi程序,例如php_cgi,由于php_cgi程序是实现了cgi协议的,所以它能够识别出nginx传过来的数据,然后去执行相应的php文件。 php_cgi将执行后的结果返回给nginx,然后进程退出。 nginx将获得的结果按照http协议规范处理后返回给浏览器。 通过fastcgi实现 Web Server启动时载入FastCGI进程管理器(IIS ISAPI,Apache Module或者php-fpm) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi)并等待WebServer的连接。 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。 FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。



PHP7源码之CG EG SG PG宏

Posted by 夏泽民

CG的含义是 compiler_globals。Zend编译器相关的全局变量。 EG的含义是 executor_globals。Zend执行器相关的全局变量。 EG和CG有一些数据是共用的。如,function_table (存储方法信息) , class_table (存储类信息) 。



ss 查看SOCKET使用情况

Posted by 夏泽民

1、命令格式: ss [参数] ss [参数] [过滤] 2、命令功能: ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于 netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中 tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有 tcp_diag,ss也可以正常运行。 3、命令参数: -h, –help 帮助信息 -V, –version 程序版本信息 -n, –numeric 不解析服务名称 -r, –resolve 解析主机名 -a, –all 显示所有套接字(sockets) -l, –listening 显示监听状态的套接字(sockets) -o, –options 显示计时器信息 -e, –extended 显示详细的套接字(sockets)信息 -m, –memory 显示套接字(socket)的内存使用情况 -p, –processes 显示使用套接字(socket)的进程 -i, –info 显示 TCP内部信息 -s, –summary 显示套接字(socket)使用概况 -4, –ipv4 仅显示IPv4的套接字(sockets) -6, –ipv6 仅显示IPv6的套接字(sockets) -0, –packet 显示 PACKET 套接字(socket) -t, –tcp 仅显示 TCP套接字(sockets) -u, –udp 仅显示 UCP套接字(sockets) -d, –dccp 仅显示 DCCP套接字(sockets) -w, –raw 仅显示 RAW套接字(sockets) -x, –unix 仅显示 Unix套接字(sockets) -f, –family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink -A, –query=QUERY, –socket=QUERY QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] -D, –diag=FILE 将原始TCP套接字(sockets)信息转储到文件 -F, –filter=FILE 从文件中都去过滤器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ] 4、使用实例:



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required