﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-长寿梦的笔记本-随笔分类-Linux系统</title><link>http://www.cppblog.com/changshoumeng/category/12985.html</link><description>专注于：
1.高性能高并发网络服务端架构
2.分布式系统
3.音视频通信技术
4.数据处理与机器学习
5.网络攻击与信息安全 。
一句话,致力于信息的获取、传输、分析、保护。
</description><language>zh-cn</language><lastBuildDate>Fri, 30 Jan 2015 16:14:37 GMT</lastBuildDate><pubDate>Fri, 30 Jan 2015 16:14:37 GMT</pubDate><ttl>60</ttl><item><title>带确认提示的关闭服务的脚本</title><link>http://www.cppblog.com/changshoumeng/archive/2015/01/29/209663.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Thu, 29 Jan 2015 06:19:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2015/01/29/209663.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/209663.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2015/01/29/209663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/209663.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/209663.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#!/bin/bash<br />#date:2015-01-29<br />#author:zhangtao<br />#desc:stop&nbsp;the&nbsp;service&nbsp;by&nbsp;given&nbsp;service-name<br />######################################################<br />SERVICE_NAME=imgate<br />WATCHDOG_NAME=startimgate.sh<br />#######################################<br />function&nbsp;stopService()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROCESS_NAME=$1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIDS=`ps&nbsp;axu&nbsp;|&nbsp;grep&nbsp;$PROCESS_NAME&nbsp;|&nbsp;grep&nbsp;-v&nbsp;"grep"&nbsp;|&nbsp;awk&nbsp;'{print&nbsp;$2}'`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIDNUM=0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;PID&nbsp;in&nbsp;$PIDS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">do</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"IsKilled&nbsp;:&nbsp;$PROCESS_NAME&nbsp;:&nbsp;$PID"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill&nbsp;-9&nbsp;$PID<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;PIDNUM=$PIDNUM+1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;[&nbsp;$PIDNUM&nbsp;==&nbsp;0&nbsp;]&nbsp;;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"NotFound&nbsp;:&nbsp;$PROCESS_NAME"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"FoundNum&nbsp;:&nbsp;$PROCESS_NAME&nbsp;:&nbsp;$PIDNUM"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"-------"&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />}<br />####################################<br />function&nbsp;printPrompt()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read&nbsp;-p&nbsp;"&gt;&gt;&gt;:you&nbsp;must&nbsp;input&nbsp;'yes'&nbsp;to&nbsp;continue:"&nbsp;choice<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;"$choice"&nbsp;!=&nbsp;"yes"&nbsp;]&nbsp;&amp;&amp;&nbsp;echo&nbsp;"&gt;&gt;&gt;:&nbsp;not&nbsp;yes,so&nbsp;exit"&nbsp;&amp;&amp;&nbsp;exit&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"&gt;&gt;&gt;:yes,continue<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />"<br />}<br /><br />#####################################<br />function&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printPrompt<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#set&nbsp;-x<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" />"<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROCESS_ARRAY=($WATCHDOG_NAME&nbsp;$SERVICE_NAME)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"length&nbsp;of&nbsp;process_array&nbsp;:${#PROCESS_ARRAY[@]}"<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"============"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;PROCESS&nbsp;in&nbsp;${PROCESS_ARRAY[@]};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">do</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopService&nbsp;$PROCESS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"----&gt;finished"<br /><br />}<br /><br />main</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/209663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2015-01-29 14:19 <a href="http://www.cppblog.com/changshoumeng/archive/2015/01/29/209663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于自己写linux c++的网络服务的tps上限的一次不严格的测试</title><link>http://www.cppblog.com/changshoumeng/archive/2015/01/20/209593.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Tue, 20 Jan 2015 09:41:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2015/01/20/209593.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/209593.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2015/01/20/209593.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/209593.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/209593.html</trackback:ping><description><![CDATA[<div><span style="font-size: 12px;">测试机： amd 两核心 ，客户端与服务端都在本机上跑。</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">网络层：A类epoll线程处理accept的被动连接；</span></div><div><span style="font-size: 12px;">B类epoll线程处理connect的主动连接；</span></div><div><span style="font-size: 12px;">C类epoll线程把A或B类epoll线程得到的连接分配到某个线程，专门处理send和recv操作；</span></div><div><span style="font-size: 12px;">D类线程池处理C类抛出来的数据，处理完之后，再投递到C类线程做send操作。</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">用ab测试短连接</span></div><div><span style="font-size: 12px;">ab -n 1000 -c 150 http://127.0.0.1:8090/</span></div><div><span style="font-size: 12px;">测试20次之后，得到一个峰值tps=6000</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">用字节的写的基于数据echo测试的压力测试程序测试长连接：</span></div><div><span style="font-size: 12px;">client发出64字节数据，echosvrd返回64字节，client又发出64字节。</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">每次传输网络传输数据在64字节以下的情况下：&nbsp;</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 100 &nbsp; &nbsp;得到tps=13851</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 1000 &nbsp; 得到tps=16641</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 10000 &nbsp;得到tps=16600 service cpu跑到90%，始终在90%以下；stree_client的cpu跑到32%左右；</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 20000 &nbsp;stree_client的cpu跑到100%告终</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 15000 &nbsp;stree_client的cpu跑到100%告终</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">把日志的输出级别调到1，此时基本无日志输出：</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 10000 &nbsp;得到tps=29436 service cpu跑到70%；stree_client的cpu跑到48%左右；</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 15000 &nbsp;stree_client的cpu跑到100%告终</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">再把网络传输的字节调整为128字节左右：</span></div><div><span style="font-size: 12px;">./stree_client 127.0.0.1 8090 10000 &nbsp;得到tps=29179 service cpu跑到68%；stree_client的cpu跑到45%左右；</span></div><div><span style="font-size: 12px;"><br /></span></div><div><span style="font-size: 12px;">结论：</span></div><div><span style="font-size: 12px;">在本机测试，就忽略了网络io时延，得到网络引擎cpu跑到100%时的tps是 不超过30000，或者不偏离30000很远，</span></div><div><span style="font-size: 12px;">此时并发连接数在10000</span></div><img src ="http://www.cppblog.com/changshoumeng/aggbug/209593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2015-01-20 17:41 <a href="http://www.cppblog.com/changshoumeng/archive/2015/01/20/209593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>统计用户到地区分布</title><link>http://www.cppblog.com/changshoumeng/archive/2014/11/09/208826.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Sun, 09 Nov 2014 13:56:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/11/09/208826.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/208826.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/11/09/208826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/208826.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/208826.html</trackback:ping><description><![CDATA[首先使用下面命令获取连接本服务到的ip列表。 <div>netstat -anp|egrep 80|egrep "EST"|awk '{print $(NF-2)}' |cut -f 1 -d ":"</div>然后用python写一个脚本实现通过IP获取归属地。<br /><img src ="http://www.cppblog.com/changshoumeng/aggbug/208826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-11-09 21:56 <a href="http://www.cppblog.com/changshoumeng/archive/2014/11/09/208826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编译Linux c++代码的几个问题</title><link>http://www.cppblog.com/changshoumeng/archive/2014/06/09/207235.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Mon, 09 Jun 2014 13:11:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/06/09/207235.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/207235.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/06/09/207235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/207235.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/207235.html</trackback:ping><description><![CDATA[<p><br />编译Linux c++代码的几个问题<br /></p>
<p>1.c++项目移植到不同版本的linux平台，需要重新编译一次。可能并不能顺利地编译通过，<br />&nbsp; 问题可能出现：gcc编译器的版本，较高版的，对语法的检查更加的严格，遇到的问题是，<br />&nbsp; include文件的依赖，template语法的声明，所依赖的系统库的缺失，在64位系统下编译<br />&nbsp; 32位程序等等。<br />&nbsp; <br />2./usr/bin/ld: cannot find -lstdc++ 解决 <br />&nbsp;&nbsp; <br />sudo yum search "static" |grep "\(libc\|stdc\+\+\)"</p>
<p>将搜索到到包，安装上就行了。</p>
<p>3.x86_64 Linux Error: gnu/stub-32.h </p>
<p>Fix for the RHEL/CentOS 5.x for GCC gnu/stub-32.h missing error<br />Type the following yum command:<br /># yum -y install glibc-devel.i386<br />Fix for the RHEL/CentOS 6.x for GCC gnu/stub-32.h missing error<br />Type the following yum command:<br /># yum -y install glibc-devel.i686 glibc-devel</p>
<p>请索引帮助文档：<br /><a href="http://www.cyberciti.biz/faq/x86_64-linux-error-gnustub-32h-missing-error-and-solution/">http://www.cyberciti.biz/faq/x86_64-linux-error-gnustub-32h-missing-error-and-solution/</a></p>
<p>4. uuid/uuid.h 找不到</p>
<p>yum -y install libuuid-devel </p>
<p><br />&nbsp;</p><img src ="http://www.cppblog.com/changshoumeng/aggbug/207235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-06-09 21:11 <a href="http://www.cppblog.com/changshoumeng/archive/2014/06/09/207235.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>问题：linux有时候通过tcp传输获取得到的mysql的字段中文内容是乱码？</title><link>http://www.cppblog.com/changshoumeng/archive/2014/04/24/206695.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Thu, 24 Apr 2014 05:15:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/04/24/206695.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/206695.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/04/24/206695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/206695.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/206695.html</trackback:ping><description><![CDATA[<div>export LANG=zh_CN.UTF-8</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/206695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-04-24 13:15 <a href="http://www.cppblog.com/changshoumeng/archive/2014/04/24/206695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>/usr/bin/ld: cannot find -lstdc++ 解决</title><link>http://www.cppblog.com/changshoumeng/archive/2014/04/20/206650.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Sat, 19 Apr 2014 16:51:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/04/20/206650.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/206650.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/04/20/206650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/206650.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/206650.html</trackback:ping><description><![CDATA[<div> sudo yum search "static" |grep "\(libc\|stdc\+\+\)"<br /><br />将搜索到到包，安装上就行了。</div> <img src ="http://www.cppblog.com/changshoumeng/aggbug/206650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-04-20 00:51 <a href="http://www.cppblog.com/changshoumeng/archive/2014/04/20/206650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>