精华内容
下载资源
问答
  • Linux发送HTTP请求

    2020-03-22 18:30:51
    exec 4<>... 建立socket连接,这里的数字4相当于是java中的...查看/proc/$$/fd可以发现如下内容,$$表示当前进程的PID,012分别代表输入,输出,错误 echo -e 'GET / HTTP/1.0\n' 1>& 4 使用标准输出1...
    exec 4<> /dev/tcp/www.baidu.com/80

    建立socket连接,这里的数字4相当于是java中的一个Socket对象,<>表示输入输出

    查看/proc/$$/fd可以发现如下内容,$$表示当前进程的PID,012分别代表输入,输出,错误

    echo -e 'GET / HTTP/1.0\n' 1>& 4

    使用标准输出1输出要发送的内容到sockeot对象4,向百度80端口发送请求,\n换行符表示本条消息结束,-e表示处理特殊字符

    cat 0<& 4

    使用标准输入0从socket对象4读取响应信息

    全部过程如下

    展开全文
  • 使用curl带以下参数请求 curl -w " @curl.txt " -o /dev/ null -s https: // www.sogo.com  结果: [@ ~]# curl -w " @curl " -o /dev/ null -s https: // www.sogo.com time_namelookup: ...

      1. 准备文件模版(curl.txt)

    \n
                time_namelookup:  %{time_namelookup}\n
                   time_connect:  %{time_connect}\n
                time_appconnect:  %{time_appconnect}\n
               time_pretransfer:  %{time_pretransfer}\n
                  time_redirect:  %{time_redirect}\n
             time_starttransfer:  %{time_starttransfer}\n
                                ----------\n
                     time_total:  %{time_total}\n
    \n

      2. 使用curl带以下参数请求

    curl -w "@curl.txt" -o /dev/null -s https://www.sogo.com

      结果:

    [@ ~]# curl -w "@curl" -o /dev/null -s https://www.sogo.com
    
                time_namelookup:  0.004
                   time_connect:  0.014
                time_appconnect:  0.141
               time_pretransfer:  0.141
                  time_redirect:  0.000
             time_starttransfer:  0.153
                                ----------
                     time_total:  0.165

     

    转载于:https://www.cnblogs.com/lnlvinso/p/9775484.html

    展开全文
  • 示例: curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{...http_code: http状态码,如200成功,301重定向,404资源未找到,500服务器错误等

    示例:

    curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "https://www.baidu.com/"

    输出:

    time_namelookup: 0.005252

    time_connect: 0.014415

    time_starttransfer: 0.051369

    time_total: 0.051625

    上面这条命令及返回结果可以这么理解:

    time_namelookup: DNS 服务器域名解析的时间(以上时间单位都是s) 。

    time_connect: client 发出请求,到 c/s 建立TCP 的时间;里面包括 DNS 解析的时间 。

    time_starttransfer: client 发出请求;到 server 响应发出第一个字节开始的时间;包括前面的2个时间 。

    time_total: 从请求发起到链接关闭的总耗时。 

    curl 命令参数解释:

    1. -o: 把curl 返回的html、js 写到垃圾回收站[ /dev/null]
    2. -s: 去掉所有状态
    3. -w: 按照后面的格式写出rt
    4. time_namelookup: DNS 解析时间,从请求开始到 DNS 解析完毕所用时间,单位为秒,如果测试的地址为IP,这里耗时即为0
    5. time_commect: client 和 server 端建立 TCP 连接的时间,连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间,用这个 time_connect 时间减去前边 time_namelookup 时间
    6. time_starttransfer: 从 client 发出请求;到 web server 响应第一个字节的时间
    7. time_total: client 发出请求;到 web server 发送回所有的相应数据的时间
    8. http_code: http状态码,如200成功,301重定向,404资源未找到,500服务器错误等
    展开全文
  • 一、查看哪些IP连接本机 netstat -an 二、查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80" | wc -l 2)统计httpd协议连接数 ps -ef | grep httpd | wc -l 3)统计已连接上的,状态为...

    一、查看哪些IP连接本机

    netstat -an
    

    二、查看TCP连接数

    1)统计80端口连接数

    netstat -nat | grep -i "80" | wc -l
    

    2)统计httpd协议连接数

    ps -ef | grep httpd | wc -l
    

    3)统计已连接上的,状态为“established

    netstat -anp | grep ESTABLISHED | wc -l
    

    4)、查出哪个IP地址连接最多,将其封了

    netstat -anp | grep ESTABLISHED | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n
    netstat -anp | grep SYN | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n
    

    实例:

    1、查看Apache当前并发访问数:

    > netstat -anp | grep ESTABLISHED | wc -l
    

    对比httpd.conf中MaxClients的数字差距多少。

    2、查看有多少个进程数:

    ps aux | grep httpd | wc -l
    

    3、可以使用如下参数查看数据

    # ps -ef | grep httpd | wc -l
    

    1388
    统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。

    表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。

    # netstat -ant | grep -i "80" | wc -l
    

    4341
    netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。最终返回的数字就是当前所有80端口的请求总数。

    # netstat -anp | grep ESTABLISHED | wc -l
    
    376
    

    netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。最终返回的数字就是当前所有80端口的已建立连接的总数。

    netstat -ant || grep ESTABLISHED | wc - 
    

    可查看所有建立连接的详细记录

    查看Apache的并发请求数及其TCP连接状态:

    # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    TIME_WAIT 8947 等待足够的时间以确保远程TCP接收到连接中断请求的确认
    FIN_WAIT1 15 等待远程TCP连接中断请求,或先前的连接中断请求的确认
    FIN_WAIT2 1 从远程TCP等待连接中断请求
    ESTABLISHED 55 代表一个打开的连接
    SYN_RECV 21 再收到和发送一个连接请求后等待对方对连接请求的确认
    CLOSING 2 没有任何连接状态
    LAST_ACK 4 等待原来的发向远程TCP的连接中断请求的确认
    

    TCP连接状态详解

    LISTEN: 侦听来自远方的TCP端口的连接请求
    SYN-SENT: 再发送连接请求后等待匹配的连接请求
    SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
    ESTABLISHED: 代表一个打开的连接
    FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
    FIN-WAIT-2: 从远程TCP等待连接中断请求
    CLOSE-WAIT: 等待从本地用户发来的连接中断请求
    CLOSING: 等待远程TCP对连接中断的确认
    LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
    TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
    CLOSED: 没有任何连接状态
    SYN_RECV表示正在等待处理的请求数;
    ESTABLISHED表示正常数据传输状态;
    TIME_WAIT表示处理完毕,等待超时结束的请求数。
    

    4、如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决

    vim /etc/sysctl.conf
    

    编辑文件,加入以下内容:

    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
    

    然后执行

    /sbin/sysctl -p 
    

    让参数生效。

    附上TIME_WAIT状态的意义:

    net.ipv4.tcp_syncookies = 1 表示开启SYN cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
    net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
    net.ipv4.tcp_fin_timeout 修改系統默认的TIMEOUT时间
    

    5、客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口状态为TIME_WAIT是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢?有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?

    主动关闭的一方在发送最后一个ack后,就会进入TIME_WAIT状态停留2MSL(max segment lifetime)时间,这个是TCP/IP必不可少的,也就是“解决”不了的。也就是TCP/IP设计者本来是这么设计的。

    主要有两个原因:

    1、防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
    2、可靠的关闭TCP连接在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发fin, 如果这时主动方处于CLOSED状态 ,就会响应rst而不是ack。所以主动方要处于TIME_WAIT状态,而不能是CLOSED 。TIME_WAIT并不会占用很大资源的,除非受到攻击。还有,如果一方 send 或 recv 超时,就会直接进入 CLOSED 状态。
    6、如何合理设置Apache httpd的最大连接数?

    手头有一个网站在线人数增多,访问时很慢。初步认为是服务器资源不足了,但经反复测试,一旦连接上,不断点击同一个页面上不同的链接,都能迅速打开,这种现象就是说明apache最大连接数已经满了,新的访客只能排队等待有空闲的链接,而如果一旦连接上,在keeyalive 的存活时间内(KeepAliveTimeout,默认5秒)都不用重新打开连接,因此解决的方法就是加大apache的最大连接数。

    1.在哪里设置?

    apache 2.24,使用默认配置(FreeBSD 默认不加载自定义MPM配置),默认最大连接数是250

    在/usr/local/etc/apache22/httpd.conf中加载MPM配置(去掉前面的注释):

    Server-pool management (MPM specific)
    
        Include etc/apache22/extra/httpd-mpm.conf
    

    可见的MPM配置在/usr/local/etc/apache22/extra/httpd-mpm.conf,但里面根据httpd的工作模式分了很多块,哪一部才是当前httpd的工作模式呢?可通过执行apachectl -l来查看:

    Compiled in modules:
                  core.c
                  prefork.c
                  http_core.c
                  mod_so.c
    

    看到prefork 字眼,因此可见当前httpd应该是工作在prefork模式,prefork模式的默认配置是:

    <IfModule mpm_prefork_module>
                    StartServers                      5
                    MinSpareServers                   5
                    MaxSpareServers                  10
                    MaxClients                      150
                    MaxRequestsPerChild               0
    </IfModule>
    

    2.要加到多少?

    连接数理论上当然是支持越大越好,但要在服务器的能力范围内,这跟服务器的CPU、内存、带宽等都有关系。

    查看当前的连接数可以用:

    ps aux | grep httpd | wc -l
    

    或:

    pgrep httpd|wc -l
    

    计算httpd占用内存的平均数:

    ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
    

    由于基本都是静态页面,CPU消耗很低,每进程占用内存也不算多,大约200K。

    服务器内存有2G,除去常规启动的服务大约需要500M(保守估计),还剩1.5G可用,那么理论上可以支持1.510241024*1024/200000 = 8053.06368

    约8K个进程,支持2W人同时访问应该是没有问题的(能保证其中8K的人访问很快,其他的可能需要等待1、2秒才能连上,而一旦连上就会很流畅)

    控制最大连接数的MaxClients ,因此可以尝试配置为:

    <IfModule mpm_prefork_module>
                    StartServers                      5
                    MinSpareServers                   5
                    MaxSpareServers                  10
                    ServerLimit                    5500
                    MaxClients                     5000
                    MaxRequestsPerChild               100
    
    复制代码 注意,MaxClients默认最大为250,若要超过这个值就要显式设置ServerLimit,且ServerLimit要放在MaxClients之前,值要不小于MaxClients,不然重启httpd时会有提示。

    重启httpd后,通过反复执行pgrep httpd|wc -l 来观察连接数,可以看到连接数在达到MaxClients的设值后不再增加,但此时访问网站也很流畅,那就不用贪心再设置更高的值了,不然以后如果网站访问突增不小心就会耗光服务器内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整,直到找到一个最优的设置值。

    (MaxRequestsPerChild不能设置为0,可能会因内存泄露导致服务器崩溃)

    更佳最大值计算的公式:

    apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
    apache_max_process = apache_max_process_with_good_perfermance * 1.5
    

    7、实时检测httpd连接数:

    watch -n 1 -d "pgrep httpd|wc -l"
    

    http://blog.csdn.net/he_jian1/article/details/40787269(以上内容转自此篇文章)

    展开全文
  • linux查看端口请求数量

    千次阅读 2017-10-16 20:49:42
    转自:http://blog.csdn.net/zdwzzu2006/article/details/7713596服务器上的一些统计数据:1)统计80端口连接数netstat -nat|grep -i "80"|wc -l2)统计httpd协议连接数ps -ef|grep httpd|wc -l3)、统计已连接上的,...
  • 查看linux下nginx处理请求的连接情况

    千次阅读 2018-10-25 11:10:43
    查看linux下nginx处理请求的连接情况 解决方法: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 详细参数解析:http://www.yayih​ouse.com/yayishuwu/chapter/1652...
  • 接下来就考虑是不是服务器性能问题,于是执行top命令,查看CPU消耗情况 上图是修改过情况,没修改前COMMAND这一列有很多wc,cat命令,于是联想到是不是可能是脚本的问题导致的 于是执行crontab -e查看脚本情况 ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • Linux curl命令http请求3xx跳转解决办法

    万次阅读 2015-03-09 14:06:08
    查看log发现是请求的页面404错误了,于是把log中打印的链接粘贴到Chrome中居然可以打开,F12一看原来是请求的这个链接有一个302的跳转。  Google查了一下发现其实 curl 命令是支持请求重定向的,可以通过 -L 参数...
  • linux日志分析查看接口请求

    万次阅读 2018-04-18 10:52:52
    好久没写博客了,最近工作太忙了,昨天有同事问我,接口的调用量大致是多少,就从网上和公司的日志格式写了个小工具,日志格式如下大致可以看到, 以数字开头,并且文本中还有http关键字,然后在配合awk命令就可以匹配到,...
  • Linux使用curl查看请求响应时间

    万次阅读 2017-04-05 15:50:11
    1.curl 查看web站点curl -o /dev/test -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" "http://www.baidu.com" 结果如下: curl的参数: -o:把curl...
  • 有关套接子和http请求报文的博客在CSDN有很多比如,点这里查看,这里我就不再做过多赘述了,下面我们直接实战,模拟http请求。 要求:浏览器访问本地的localhost,在浏览器页面打印出 Hello World 首先:ping 一下...
  • linux 查看http连接等

    千次阅读 2019-03-04 21:35:37
    1、查看apache当前并发访问数: #对比httpd.conf中...2、查看httpd进程数(即prefork模式下Apache能够处理的并发请求数): ps aux|grep httpd|wc -l 3、可以使用如下参数查看数据 ps -ef|grep httpd|wc -l #...
  • 已采纳 ...netstat -an | grep ESTABLISHED | wc -l2、查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):ps aux|grep httpd|wc -l3、可以使用如下参数查看数据 ps -ef|grep htt...
  • curl,全称CommandLine URL 或 CommandLine Uniform Resource Locator,...curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。curl支持H...
  • linux查看http 并发和 tcp连接数

    千次阅读 2017-01-07 21:50:58
    linux查看httpd进程数 ps -ef | grep httpd | wc -l 查看Apache的并发请求数及其TCP连接状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' (这条语句是从新浪互动社区事业部...
  • 还有ulimit-n查看linux系统打开最大的文件描述符,这里默认1024 不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个: 修改/etc/security/limits.conf *softnofile10240 *hardnofile...
  • curl -d "***" "http://192.168.**。**:8080/url" --header "Content-Type: application/json" >...可以通过上面的网站查看curl的请求参数和请求的类型 更详细的内容可以参考上面的网址进行测试使用 ...
  • linux 查看并发

    2017-11-12 15:48:00
    1 netstat-an|awk'/^tcp/{++S[$NF]}END{for(iinS)printi,S[i]}' ...查看http的并发请求数与其TCP连接状态,的完成命令 本文转自 a928154159 51CTO博客,原文链接:http://blog.51cto.com/zhibeiwang/183...
  • Charles抓取http请求详解

    千次阅读 2018-03-22 22:56:00
    使用过Charles进行抓包,但一直也没有总结过,今天讲讲Charles...1、查看发出去的请求 2、定位问题,定位分析是server端的问题还是客户端的问题 3、帮助模拟一些服务端返回的异常情况 4、手机抓包,需要注意:...
  • Linux下:curl命令,I参数可以查看http head信息。 Firefox:Firebug、HttpFox 二、常见Http Head信息 三、浏览器缓存机制 使用ctrl+F5,可强制浏览器直接向url发起请求,而不会使用缓存信息。此时,会在...
  • Linux中,服务器上运行的每个服务都在侦听客户端的套接字以发出连接请求。 从客户端成功连接后,将创建套接字(IP地址和端口的组合(标识客户端连接到的应用程序/服务的数字))。为了获得这些套接字的详细信息,我们...
  • 查看Linux并发连接数

    2015-03-04 14:45:15
    1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态: 1 2 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat -n|gr
  • linux 定时任务crontab操作 请求php接口

    千次阅读 2018-07-09 08:55:23
    linux默认都安装了crontab,Terminal中执行指令。crontab -l 查看当前用户下的定时任务“crontab -e ”:修改或者新建当前任务( 默认进入crontab任务进行编辑 或者第一次编辑后保存的名字就是crontab),弹出的页面...
  • linux——HTTP服务

    千次阅读 2018-03-26 14:01:45
    一.URL 全称“统一资源定位器”访问资源 格式:协议://服务器IP或FQDN/文件二:HTTP协议...服务器相应客户端的 请求后,将客户端 请求的文件发送至客户端,在客户端上通过浏览器解码后,即可查看到网页内容。四...
  • 巧用nc命令搭建http请求调试工具

    千次阅读 2015-07-13 20:46:00
    Linux下,使用nc命令可以传输文件,可以方便快捷的调试http请求查看请求信息。  作为nc调试工具,可以用以下方式实现: 1.在本机终端执行命令 nc -l 8888 这样,就开启了监听本地8888端口的服务。 2....
  • Linux下使用curl查看http api 接口请求各阶段耗时2021-01-05 17:52:131. 准备文件模版(curl.txt)\ntime_namelookup:%{time_namelookup}\ntime_connect:%{time_connect}\ntime_appconnect:%{time_appconnect}\ntime_...
  • LinuxHTTP通信简析及实现HTTP服务器

    千次阅读 2018-11-21 14:38:32
    Linux下我们使用HTTP协议进行通讯,即客户端在浏览器请求服务器的某个服务(页面)。我们在主机上进行测试的时候,可以开启httpd服务以处理客户端的请求,一般来说我们的页面放在/var/www/html底下,我们这些操作...
  • nginx系列5-http请求

    2019-01-04 14:07:01
    linux下,curl命令工具的功能跟浏览器的功能类似,只不过没有渲染功能,通过下面命令可以查看 [root@localhost ~]# curl -v http://www.imooc.com &gt;/dev/null % Total % Received % Xferd Average Speed ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 485
精华内容 194
关键字:

查看linuxhttp请求

linux 订阅