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

上海广告公司薪资济南网站优化小黑

上海广告公司薪资,济南网站优化小黑,it网站模板,站长工具seo查询一#xff0c;背景 通常一些偷流量、端口占用、网络负载高、socket创建释放异常等Android网络相关问题#xff0c;可以通过使用tcpdump抓tcp/ip报文#xff0c;来定位。但是tcpdump无进程信息#xff0c;也没有APK包名信息#xff0c;无法确认异常的报文来自哪些Apk或者n…一背景 通常一些偷流量、端口占用、网络负载高、socket创建释放异常等Android网络相关问题可以通过使用tcpdump抓tcp/ip报文来定位。但是tcpdump无进程信息也没有APK包名信息无法确认异常的报文来自哪些Apk或者native进程。本题解决tcpdump报文无法关联到哪个进程/APK的问题。 二tcpdump tcpdump是该类问题基本的工具。在此仅作简单介绍。 tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.0.1/24 -C 60 -W 15 -w /data/.... tupdump使用参数说明 tcp ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置用来过滤数据报的类型。如果都看则删掉这个字段。 -i eth1 只抓经过接口eth1的包。可以换成其他网卡比如rmnet0。有些手机产品可能传统数据在rmnet0, IMS数据在rmnet8(举例)。为避免遗漏可以 -i any 表示抓取所有网卡的tcpdump。 -t 不显示时间戳 -s 0 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包。默认不要这个参数除非是为了导出完整应用层报文。 -c 100 只抓取100个数据包 dst port ! 22 不抓取目标端口是22的数据包 src net 192.168.0.1/24  数据包的源网络地址为192.168.0.1/24 -w /data/netdebug/tcpdump.pcap 保存到指定位置。注意位置的selinux权限注意不要放在/mnt等重启后会丢的位置。 -C 60 -W 15  -C 表示count。 tcpdump将在接受到count个数据包后退出。-W与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件, 这相当于一个拥有filecount 个文件的文件缓冲池. 同时, 该选项会使得每个文件名的开头会出现足够多并用来占位的0, 这可以方便这些文件被正确的排序。 其他可以参考 tcpdump详解及抓取安卓数据包使用介绍 - Curtain_dusk - 博客园 (cnblogs.com) 三strace strace命令可以用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界进程不能直接访问硬件设备当进程需要访问硬件设备(比如读取磁盘文件接收网络数据等等)时必须由用户态模式切换至内核态模式通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数返回值执行消耗的时间。 针对网络问题开机阶段在adb shell中敲如下命令 adb root adb shell #mkdir /data/netdebug #strace -p pidof zygote64 -f -tt -e tracenetwork -o /data/netdebug/strace.txt 由于zygote是所有的java世界APP的父进程参数 -p pidof zygote64 -f 用来跟踪所有zygote孵化出来的应用的系统调用信息。 -tt  用来打印时间戳 -e tracenetwork 用来筛选network相关的打印避免打印太多。 抓到的trace.txt可以通过关键字筛选你需要的LOG如 4895 10:59:30.755422 sendto(71, \32\34 \0056\r2.18.24.01971\v\t\237\17XL\\, 28, 0, {sa_familyAF_INET, sin_porthtons(8003), sin_addrinet_addr(221.181.97.233)}, 16) 28 4895 10:59:33.788692 sendto(71, \32\34 \0056\r2.18.24.01971\v\t\237\17XL\\, 28, 0, {sa_familyAF_INET, sin_porthtons(8003), sin_addrinet_addr(221.181.97.233)}, 16) 28 4895 10:59:34.803777 sendto(71, \32\34 \0056\r2.18.24.01971\v\t\237\17XL\\, 28, 0, {sa_familyAF_INET, sin_porthtons(8003), sin_addrinet_addr(221.181.97.233)}, 16) 28 4905 10:59:34.830972 recvfrom(71, \32\34 \0066\0\v,6\016223.160.207.64B\0\0\357K, 4096, 0, {sa_familyAF_INET, sin_porthtons(8003), sin_addrinet_addr(221.181.97.233)}, [16]) 29 4895 10:59:36.833750 sendto(71, \32\34 \0056\r2.18.24.01971\v\t\237\17XL\\, 28, 0, {sa_familyAF_INET, sin_porthtons(8003), sin_addrinet_addr(221.181.97.233)}, 16) 28 4895 10:59:38.611536 sendto(71, \0\0\1\1\0\0\0\0\0\0\0\0\0\0\n\2t\237\17X\21\351\246,0\1LR\0\\..., 295, 0, {sa_familyAF_INET, sin_porthtons(30013), sin_addrinet_addr(112.53.47.99)}, 16) 295 4905 10:59:38.700206 recvfrom(71, \0\0\1\20\1\0\351\246\0\0\0\0\0\0\0\n\f\21\351\246,0\1L\\b\0\7\367\357|..., 4096, 0, {sa_familyAF_INET, sin_porthtons(30013), sin_addrinet_addr(112.53.47.99)}, [16]) 272 4895 10:59:39.920103 sendto(71, \32\34 \0056\r2.18.24.01971\v\t\237\17XL\\, 28, 0, {sa_familyAF_INET, sin_porthtons(8003), sin_addrinet_addr(221.181.97.233)}, 16) 28 时间戳左边的是进程ID右边表示发送或接收、对方的端口以及对方的ip地址等信息。 更多关于strace的介绍参考下面 Linux strace命令 - ggjucheng - 博客园 (cnblogs.com) 四netstat strace打印用来定位有两个缺点。一个是如果系统网络吞吐率比较高打印会比较多甚至爆掉。另一个就是看不到应用创建socket在本地的端口。对于有些短时间创建了大量socket却并未能正常联网导致端口被占用的问题定位不方便。strace的缺点可以通过使用netstat命令来弥补 adb root adb shell #netstat -tunpla 打印的信息如下 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program Name作为服务端 tcp 0 0 127.0.0.1:60001 0.0.0.0:* LISTEN 3805/com.fiill.app.map tcp 0 0 193.18.2.101:60001 0.0.0.0:* LISTEN 491/name-server作为client tcp 0 0 193.18.2.101:60207 193.18.2.100:60034 ESTABLISHED 2793/com.fiill.car.parking tcp 0 0 193.18.2.101:58211 193.18.2.100:60027 ESTABLISHED 1521/com.android.car 端口、IP、包名、PID、当前进程状态都很清晰。缺点手动netstat才会有。 五trace脚本化 1通过周期性保存netstat打印 针对netstat不是周期性打印的缺陷可以通过新建脚本放到系统中运行解决。不多说直接上代码  netstat_dump.sh #! /system/bin/sh# #adb root #adb shell mkdir -p /data/netdebug #adb push netstat_dump.sh /data/ #adb shell chmod 777 /data/netstat_dump.sh #./data/netstat_dump.sh #global GPATH/data/netdebugprepare_path(){mkdir -p $GPATH }prepare_pathwhile true doDUMP_FILE$GPATH/netstat_tunpla_$(date %F-%H-%M-%S)echo ******BEGIN****** $DUMP_FILEdate %F-%H-%M-%S $DUMP_FILEnetstat -tunpla $DUMP_FILEdate %F-%H-%M-%S $DUMP_FILEecho ******END****** $DUMP_FILEsleep 30 done 上述脚本是每30秒执行一次netstat, 并保存在/data/netdebug/目录下以时间戳命令的文件中。 2其他相关命令 如果要确认一些系统配置其他网络相关的命令还有 sysctl -a  busybox arp -a busybox ip route busybox ifconfig 加上busybox是考虑可能系统没相关组件某些命令敲了没结果。 3strace创建开机运行脚本 类似地也可以给strace脚本编译到系统中通过init.rc启动实现自动化。 创建一个starce_network.sh脚本编译到/system/bin目录。 #! /system/bin/sh# #adb root #adb shell mkdir -p /data/netdebug #global GPATH/data/netdebugprepare_path(){mkdir -p $GPATH }prepare_pathstrace -p pidof zygote64 -f -tt -e tracenetwork -o /data/netdebug/strace.txt在init.rc里面声明 service starce_network /system/bin/starce_network.shclass late_startuser rootgroup rootdisabledoneshot 备注 1类似地可以增加更多的脚本比如开机启动tcpdump。不在冗述。 2针对native世界则 strace -p pidof zygote64 -f 覆盖不到。 可以创建多个实例通过如 -p pidof surfaceflinger 穷举的方式来dump。 六其他 1统计tcp连接情况 netstat -an|awk /tcp/ {print $6}|sort|uniq -c 结果     81 ESTABLISHED     14 LISTEN      1 SYN_SENT      2 TIME_WAIT 2查看系统配置 cat /etc/sysctl.conf 如果不符合预期则修改上述文件保存退出并 sysctl -p 使配置生效。主要如果linux没有该文件节点调查内核编译配置 CONFIG_DEBUG_FS 是否打开了。 3部分网络配置说明 #tcp 检查间隔tcp keepalive 探测包的发送默认75 tcp_keepalive_intvl #tcp 检查次数如果对方不予应答探测包的发送次数默认 9 tcp_keepalive_probes #对于一个新建连接内核要发送多少个 SYN 连接请求才决定放弃,不应该大于255默认值是5对应于180秒左右时间 net.ipv4.tcp_syn_retries2 net.ipv4.tcp_synack_retries2 #表示当keepalive起用的时候TCP发送keepalive消息的频度。缺省是2小时改为300秒 net.ipv4.tcp_keepalive_time1200 net.ipv4.tcp_orphan_retries3 #表示如果套接字由本端要求关闭这个参数决定了它保持在FIN-WAIT-2状态的时间 net.ipv4.tcp_fin_timeout30 #表示SYN队列的长度默认为1024加大队列长度为8192可以容纳更多等待连接的网络连接数。 net.ipv4.tcp_max_syn_backlog 4096 #表示开启SYN Cookies。当出现SYN等待队列溢出时启用cookies来处理可防范少量SYN攻击默认为0表示关闭 net.ipv4.tcp_syncookies 1   #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接默认为0表示关闭 net.ipv4.tcp_tw_reuse 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收默认为0表示关闭 net.ipv4.tcp_tw_recycle 1   ##减少超时前的探测次数 net.ipv4.tcp_keepalive_probes5 #优化网络设备接收队列 net.core.netdev_max_backlog3000 #表示系统同时保持 TIME_WAIT 的最大值如果超过这个值TIME_WAIT 会被立刻清除并打印警告信息。 net.ipv4.tcp_max_tw_buckets2500 #表示用于向外连接的端口范围。默认情况是32768 61000。注意不要将最低值设得太低否则可能会占用正常的端口。 net.ipv4.ip_local_port_range10000 65000 4, android运行在QNX中 如果android运行在QNX中QNX的网络状况也要拿来做参考cat vm/images/linux-la.configarp -anetstat -rroute shownetstat -asnetstat -imsysctl -a tracelogger -r -s3 -b1024 -k4096 -w -f/xxx.kevslog2info -b io_pkt_v6_hc -b iopkt -W /iopkt_slog.logtcpdump -i vp0 -n -ee -vv -w /qnx.pcap -s 0 #For dumper to create a core file, you must start io-pkt with -S. pidin  | grep io-pktdumper -p pid of io-pkt
http://www.dnsts.com.cn/news/184913.html

相关文章:

  • p2p网站建设cms石泉县城乡建设局网站
  • 海口会计报名网站宇宙设计网站推荐
  • 网络推广网站首页大图扬州网站商城建设价格表
  • 济宁百度网站建设创意设计网站公司
  • 空间站天宫vr全景wordpress mysql用户名
  • 金华建站软件网站运营公司
  • 企业网站和展板建设网站建设运营协议书
  • 做网站如何添加视频购物车按钮颜色wordpress
  • 黄石专业网站建设推广网站建设商业计划书范文
  • 建站报价电子商务网站建设规划方案论文
  • 网站后台密码是什么网址导航系统
  • 网站建设行业解决方案中国建设部网站能查叉车证
  • wordpress插件全集搜索引擎优化简称
  • 网站建设费用要摊销嘛设计网站包含的功能模块
  • 网站建设与管理代码题手机网页用什么开发
  • 宁波优化关键词首页排名seo0577
  • 电子商务网站建设与管理的背景执业医师报考条件2022年最新规定
  • 资源搜索网站是怎么做的找做仿网站
  • 环球资源网的网站特色外贸网站推广哪个平台好
  • 旺道seo网站优化大师灰色推广引流联系方式
  • 中山哪里做网站建设网站需要多大域名空间
  • 娱乐论坛网站建设方案范文网站开发中心
  • 网站 管理山东诚祥建设集团公司网站
  • dw软件做二级连接网站上海网站推广软件
  • 网站从建设到运行要多少微网站是免费的吗
  • 长春网站建设哪家好上海企业网站制作服务
  • 南山做网站价格七个2wordpress
  • 优舟网站建设站长之家的作用
  • 嘉兴企业网站开发校园网站界面建设
  • 常用的营销策略网络优化推广 网站开发建设