当前位置: 首页 > news >正文

淳安网站建设制作wordpress首页调用文章

淳安网站建设制作,wordpress首页调用文章,网站开发报价单 excel,书画艺术网站建设ss用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息#xff0c;它可以显示和netstat(参考https://www.jianshu.com/p/7630474c39b1)类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息#xff0c;而且比netstat更快速更高效。当服…ss用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息它可以显示和netstat(参考https://www.jianshu.com/p/7630474c39b1)类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时无论是使用netstat命令还是直接cat /proc/net/tcp执行速度都会很慢。可能你不会有切身的感受但请相信我当服务器维持的连接达到上万个的时候使用netstat等于浪费 生命而用ss才是节省时间。天下武功唯快不破。ss快的秘诀在于它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块可以获得Linux 内核中第一手的信息这就确保了ss的快捷高效。当然如果你的系统中没有tcp_diagss也可以正常运行只是效率会变得稍慢。参数(和netstat类似)-h显示帮助信息-V显示指令版本信息-n不解析服务名称以数字方式显示-a显示所有的套接字-l显示处于监听状态的套接字-o显示计时器信息-m显示套接字的内存使用情况-p显示使用套接字的进程信息-i显示内部的TCP信息-4只显示ipv4的套接字-6只显示ipv6的套接字-t只显示tcp套接字-u只显示udp套接字-d只显示DCCP套接字-w仅显示RAW套接字-x仅显示UNIX域套接字。示例[adminlocalhost ~]# ss -t -aState      Recv-Q Send-Q                            Local Address:Port                                Peer Address:PortLISTEN      0      0                                            *:3306                                          *:*LISTEN      0      0                                            *:http                                          *:*LISTEN      0      0                                            *:ssh                                            *:*LISTEN      0      0                                    127.0.0.1:smtp                                          *:*ESTAB      0      0                                112.124.15.130:42071                              42.156.166.25:httpESTAB      0      0                                112.124.15.130:ssh                              121.229.196.235:33398显示统计信息[adminlocalhost ~]# ss -sTotal: 172 (kernel 189)TCP:  10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5Transport Total    ip        IPv6*        189      -        -RAW      0        0        0UDP      5        5        0TCP      6        6        0INET      11        11        0FRAG      0        0        0查看进程使用的socket[adminlocalhost ~]# ss -plState      Recv-Q Send-Q                                Local Address:Port                                    Peer Address:PortLISTEN      0      128                                              :::ssh                                              :::*        users:((sshd,1292,4))LISTEN      0      128                                              *:ssh                                                *:*        users:((sshd,1292,3))LISTEN      0      128                                      127.0.0.1:ipp                                                *:*        users:((cupsd,1165,7))LISTEN      0      128                                            ::1:ipp                                              :::*        users:((cupsd,1165,6))LISTEN      0      128                                              *:32957                                              *:*        users:((rpc.statd,1104,9))LISTEN      0      128                                              :::57637                                            :::*        users:((rpc.statd,1104,11))LISTEN      0      80                                              :::mysql                                            :::*        users:((mysqld,1528,17))LISTEN      0      128                                              *:6379                                              *:*        users:((redis-server,1672,5))LISTEN      0      128                                              :::6379                                              :::*        users:((redis-server,1672,4))LISTEN      0      128                                              :::sunrpc                                            :::*        users:((rpcbind,1084,11))LISTEN      0      128                                              *:sunrpc                                            *:*        users:((rpcbind,1084,8))LISTEN      0      128                                              *:http                                              *:*        users:((nginx,1685,13),(nginx,3698,13),(nginx,3699,13))关于Recv-Q和Send-Q状态当 client 通过 connect 向 server 发出 SYN 包时client 会维护一个 socket 等待队列而 server 会维护一个 SYN 队列此时进入半链接的状态如果 socket 等待队列满了server 则会丢弃而 client 也会由此返回 connection time out只要是 client 没有收到 SYNACK3s 之后client 会再次发送如果依然没有收到9s 之后会继续发送半连接 syn 队列的长度为 max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog)  决定当 server 收到 client 的 SYN 包后会返回 SYN, ACK 的包加以确认client 的 TCP 协议栈会唤醒 socket 等待队列发出 connect 调用client 返回 ACK 的包后server 会进入一个新的叫 accept 的队列该队列的长度为 min(backlog, somaxconn)默认情况下somaxconn 的值为 128表示最多有 129 的 ESTAB 的连接等待 accept()而 backlog 的值则由int listen(int sockfd, int backlog) (网络编程的一个参数)中的第二个参数指定。当 accept 队列满了之后即使 client 继续向 server 发送 ACK 的包也会不被相应此时server 通过 /proc/sys/net/ipv4/tcp_abort_on_overflow 来决定如何返回0 表示直接丢丢弃该 ACK1 表示发送 RST 通知 client相应的client 则会分别返回 read timeout 或者 connection reset by peer。上面说的只是些理论如果服务器不及时的调用 accept()当 queue 满了之后服务器并不会按照理论所述不再对 SYN 进行应答返回 ETIMEDOUT。可以看到整个 TCP stack 有如下的两个 queue:1. 一个是 half open(syn queue) queue(max(tcp_max_syn_backlog, 64))用来保存 SYN_SENT 以及 SYN_RECV 的信息。2. 另外一个是 accept queue(min(somaxconn, backlog))保存 ESTAB 的状态但是调用 accept()。使用 ss 获取到的 Recv-Q/Send-Q 在 LISTEN 状态以及非 LISTEN 状态所表达的含义是不同的。LISTEN 状态: Recv-Q 表示的当前等待服务端调用 accept 完成三次握手的 listen backlog 数值也就是说当客户端通过 connect() 去连接正在 listen() 的服务端时这些连接会一直处于这个 queue 里面直到被服务端 accept()Send-Q 表示的则是最大的 listen backlog 数值这就就是上面提到的 min(backlog, somaxconn) 的值。其余状态: 非 LISTEN 状态代表缓冲区字节数量。Recv-Q 表示 receive queue 中的 bytes 数量Send-Q 表示 send queue 中的 bytes 数值。查看tcp_diag代码static void tcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, void *_info) {const struct tcp_sock *tp  tcp_sk(sk);struct tcp_info *info  _info;if (sk-sk_state  TCP_LISTEN) {r-idiag_rqueue  sk-sk_ack_backlog;r-idiag_wqueue  sk-sk_max_ack_backlog;} else {r-idiag_rqueue  tp-rcv_nxt - tp-copied_seq;r-idiag_wqueue  tp-write_seq - tp-snd_una;}if (info ! NULL)tcp_get_info(sk, info);}显示更多的信息-o, --options 显示时间信息(定时器)-m, --memory 显示 socket 使用的内存-i, --info 显示更多 TCP 内部的信息-s 显示统计信息~ # ss -a -t -o -4State       Recv-Q Send-Q                                            Local Address:Port                                                Peer Address:PortLISTEN      0      128                                                           *:openvms-sysipc                                                        *:*ESTAB       0      0                                                172.16.132.189:ssh                                                172.16.132.93:hs-port  timer:(keepalive,65min,0)ESTAB       0      0                                                    10.0.64.19:49462                                                10.0.64.107:61616ESTAB       0      0                                                172.16.132.189:ssh                                                172.16.132.85:63934    timer:(keepalive,38min,0)ESTAB       0      0                                                    10.0.64.19:60569                                                10.0.64.107:61616这个输出更上次输出相比多了一个timer输出。这个输出描述的是tcp socket上的定时器在说明这个之前先了解一下linux对一个tcp socket可能设置的定时器。tcp socket总共有7个定时器通过4个timer实现。分别是通过icsk_retransmit_timer实现的重传定时器、零窗口探测定时器通过sk_timer实现的连接建立定时器、保活定时器和FIN_WAIT_2定时器通过icsk_delack_timer实现的延时ack定时器以及TIME_WAIT定时器。我们看一下ss的代码static const char *tmr_name[]  {off,on,keepalive,timewait,persist,unknown};if (show_options) {if (r-idiag_timer) {if (r-idiag_timer  4)r-idiag_timer  5;printf( timer:(%s,%s,%d),tmr_name[r-idiag_timer],print_ms_timer(r-idiag_expires),r-idiag_retrans);}}对应的内核代码是if (icsk-icsk_pending  ICSK_TIME_RETRANS) {r-idiag_timer  1;r-idiag_retrans  icsk-icsk_retransmits;r-idiag_expires  EXPIRES_IN_MS(icsk-icsk_timeout);} else if (icsk-icsk_pending  ICSK_TIME_PROBE0) {r-idiag_timer  4;r-idiag_retrans  icsk-icsk_probes_out;r-idiag_expires  EXPIRES_IN_MS(icsk-icsk_timeout);} else if (timer_pending(sk-sk_timer)) {r-idiag_timer  2;r-idiag_retrans  icsk-icsk_probes_out;r-idiag_expires  EXPIRES_IN_MS(sk-sk_timer.expires);} else {r-idiag_timer  0;r-idiag_expires  0;}static int inet_twsk_diag_fill(struct inet_timewait_sock *tw, struct sk_buff *skb, int ext, u32 pid,u32 seq, u16 nlmsg_flags, const struct nlmsghdr *unlh){long tmo;struct inet_diag_msg *r;const unsigned char *previous_tail  skb_tail_pointer(skb);struct nlmsghdr *nlh  NLMSG_PUT(skb, pid, seq,unlh-nlmsg_type, sizeof(*r));r  NLMSG_DATA(nlh);BUG_ON(tw-tw_state ! TCP_TIME_WAIT);nlh-nlmsg_flags  nlmsg_flags;tmo  tw-tw_ttd - jiffies;if (tmo tmo  0;r-idiag_family  tw-tw_family;r-idiag_retrans  0;r-id.idiag_if  tw-tw_bound_dev_if;r-id.idiag_cookie[0]  (u32)(unsigned long)tw;r-id.idiag_cookie[1]  (u32)(((unsigned long)tw  31)  1);r-id.idiag_sport  tw-tw_sport;r-id.idiag_dport  tw-tw_dport;r-id.idiag_src[0]  tw-tw_rcv_saddr;r-id.idiag_dst[0]  tw-tw_daddr;r-idiag_state  tw-tw_substate;r-idiag_timer  3;r-idiag_expires  DIV_ROUND_UP(tmo * 1000, HZ);r-idiag_rqueue  0;r-idiag_wqueue  0;r-idiag_uid  0;r-idiag_inode  0;timer的输出含义就是(类型过期时间重试次数)这里说一下类型的含义off: 当前socket没有timeron: 重传timerkeepalive连接建立timer or fin_wait_2 timer or 保活timer具体是那个timer可以根据连接的状态来确定。timewait: TIME_WAITtimerpersist零窗口探测timerdst/src dport/sport 语法可以通过 dst/src/dport/sprot 语法来过滤连接的来源和目标来源端口和目标端口。匹配远程地址和端口号$ ss dst 192.168.1.5$ ss dst 192.168.119.113:http$ ss dst 192.168.119.113:443将本地或者远程端口和一个数比较可以使用下面的语法做端口号的过滤$ ss dport OP PORT$ ss sport OP PORTOP 可以代表以下任意一个le小于或等于某个端口号ge大于或等于某个端口号eq等于某个端口号!ne不等于某个端口号gt大于某个端口号下面是一个简单的 demo(注意需要对尖括号使用转义符)$ ss -tunl sport lt 50$ ss -tunl sport \ 50$  ss dport :8080 or sport :8080ss 命令还可以通过 TCP 连接的状态进程过滤支持的 TCP 协议中的状态有establishedsyn-sentsyn-recvfin-wait-1fin-wait-2time-waitclosedclose-waitlast-acklisteningclosing除了上面的 TCP 状态还可以使用下面这些状态all列出所有的 TCP 状态。connected列出除了 listening 和 closing 之外的所有 TCP 状态。synchronized列出除了 syn-sent 之外的所有 TCP 状态。bucket列出 maintained 的状态如time-wait 和 syn-recv。big列出和 bucket 相反的状态。使用 ipv4 时的过滤语法如下使用 ipv6 时的过滤语法如下1$ ss -6 state filter下面的两种写法是等价的要有使用 \ 转义小括号要么使用单引号括起来$ ss -4n state listening \( dport :ssh\)$ ss -4n state listening ( dport :ssh )找出打开套接字/端口应用程序[adminlocalhost ~]# ss -pl | grep330600*:3306*:* users:((mysqld,1718,10))ss -o state established ( dport :smtp or sport :smtp ) 显示所有已建立的SMTP连接ss -o state established ( dport :http or sport :http ) 显示所有已建立的HTTP连接ss -o state established ( dport :8080 or sport :8080 )
http://www.huolong8.cn/news/141530/

相关文章:

  • 个人网站做重定向图片wordpress视频文件大小设置
  • 嘉兴微网站建设wordpress建站小百科
  • 合肥企业建站系统商城网站开发的完整流程
  • 视频网站主持人贵州企业网站
  • 国外网站导航网站搭建谷歌seo
  • 百度网站推广怎么样广点通投放平台登录
  • 宁波专业网站推广平台咨询环球资源网成立时间
  • 中怎么做网站上下载图片的功能南昌外包建站
  • 制作商城网站西安官网seo收费
  • 巩义专业网站建设公司推荐.net开发的网站有哪些
  • 网站模板文件扫描win10部署wordpress
  • 网站关键词 查询制作网页需要用到哪些工具
  • 梅江区建设局网站做婚礼请柬的网站有哪些
  • 昆明做网站那家好古典网站建设
  • 会声会影模板免费网站seo技术分类
  • 专门做招商的网站是什么意思广州设计公司网站
  • 能绑定域名的免费网站安徽合肥做网站的公司有哪些
  • 学生做网站期末作业wordpress适合百度
  • WordPress建影视站十大网络营销经典案例
  • 网站建设视频教程网字节跳动现有员工人数
  • 计算机科学与技术 开题报告 网站建设医疗器械网上采购平台
  • 潍坊网站建设小程序php开发做网站
  • vs210做网站国内创意网页设计
  • 电话号码宣传广告汕头百度seo电话
  • 常州自助做网站wordpress建站博客
  • 移动网站的设计报告织梦的手机端网站模板下载地址
  • flask做视频网站广州百度seo
  • 百度做的网站 如果不做推广了 网站还保留吗国外flash网站模板
  • 网站空间换了 使用原有域名软文广告经典案例分析
  • 网站建设财务计划与预测小广告网页