<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux &#8211; HU Xiaoxu</title>
	<atom:link href="https://blog.ihuxu.com/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ihuxu.com</link>
	<description>a software engineer&#039;s blog</description>
	<lastBuildDate>Sat, 21 Jun 2025 02:01:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
	<item>
		<title>工作效率之动态 IP 域名化篇</title>
		<link>https://blog.ihuxu.com/work-efficiency-dynamic-ip-to-domain-name/</link>
					<comments>https://blog.ihuxu.com/work-efficiency-dynamic-ip-to-domain-name/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Mon, 13 Feb 2017 13:51:57 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Others]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Launchd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Original]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=9460</guid>

					<description><![CDATA[在公司里，RD 们不免会使用一些代理服务来进行抓包操作。那么就需要获取代理服务器（一般为自己的电脑）的内网 IP。然而，这个内网 IP 并不是固定不变的。所以，每次配置代理 IP 时就略显麻烦。那么，下面就来聊聊如何解决这个尴尬，提升效率。 方案 将非固定 IP 实时解析到域名中。利用阿里云的域名解析开发者 API 进行定时的更新。其中的定时用本机（Mac）的 Launchd 实现（类似 Linux 下的 Crontab）。 原材料 步骤 下载阿里云 SDK &#38; 编写更新脚本 代码库：https://github.com/aliyun/aliyun-openapi-php-sdk.git 官方的接口文档：https://help.aliyun.com/document_detail/29774.html?spm=5176.doc29740.6.615.ADurH2 其中有个简要的文档，确实文档比较“简陋”，还会看到 github 中 issues 骂娘的。 在调用使用 SDK 编写脚本的过程中，会用到一个秘钥。这个秘钥可以到阿里云的管理控制台中获取。如下图： 配置 Mac 的 Timed Job 打开 Mac 终端，进入目录 /System/Library/LaunchDaemons 下。会看到很多 plist 为后缀的文件。每一个文件都是一个定时任务。具体的定时任务的写法，请参见苹果开发中中心文档：Scheduling Timed Jobs 结束语 这样一来，在任何情况下配置代理时填入一个固定的域名就搞定了。其实，除此之外还可以把一些有变动的或者不好记的IP都解析成域名，这样在使用时会顺手些。比如登陆一些开发机： 文章来源：工作效率之动态IP域名化篇]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/work-efficiency-dynamic-ip-to-domain-name/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>小型网站架构降 Apache 与 MySQL 内存占用比率</title>
		<link>https://blog.ihuxu.com/how-to-configure-the-apache-and-mysql-server-effectively-under-the-framework-of-a-small-web-site/</link>
					<comments>https://blog.ihuxu.com/how-to-configure-the-apache-and-mysql-server-effectively-under-the-framework-of-a-small-web-site/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Tue, 13 Dec 2016 11:38:12 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Problem]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Original]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=9365</guid>

					<description><![CDATA[前言 这篇文章以我的阿里云服务器为例（你眼前的博客正是搭在这个服务器上），阐述下小型网站（Linux+Apache+MySQL+PHP）对于内存利用率提升的配置方法的一个点。 正文 我的服务器是阿里云的，在一年前由于数据库（MySQL）频繁内存不足宕机就“潇洒”地升级了配置到2G内存。所以，目前机器的配置如下： CPU： 1核 内存： 2048 MB 操作系统： CentOS 6.5 32位 公网IP： 115.28.36.19 带宽计费方式： 按固定带宽 当前使用带宽： 1Mbps 同时，正常使用情况下的内存使用情况如下： 图中显示 MySQL 占用 440m，Apache 占用 44m。当然，这是MySQL 服务和 Apache 服务刚刚重启后的情况。实际的内存占用会比这大，因为随着业务的进行，会进行 Cache 的累积，最后导致整体的使用内存增大。 下面分别调整 MySQL 和 Apache 的配置文件。 MySQL 修改 /etc/my.cnf 文件，增加如下配置内容： 内容使用情况如下： 如图所示，在修改 MySQL 配置项后内存使用已经大幅度下降到 71m 了。所以，默认的 MySQL 配置真是不适合我们这种小型网站。同时，你会注意到运行了一段时间后，Apache 内存占比上升，使用量达到406m。真是可怕。 下面我们修改 Apache 的配置文件，httpd.conf： 由于我的 Apache 加载的是 event 模式，所以我这里修改了相应的 event 模块配置。如果你想知道你自己加载的是哪种模式，每一个配置项是什么意思，那么你可以参阅下这篇文章：apache2.4.x 三种 MPM 介绍。 修改后配置重启就 OK 了。 总结 没有总结]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/how-to-configure-the-apache-and-mysql-server-effectively-under-the-framework-of-a-small-web-site/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>在 Linux 下通过 strace 与 lsof 命令排查 PHP 异常进程</title>
		<link>https://blog.ihuxu.com/php-abnormal-process-investigation/</link>
					<comments>https://blog.ihuxu.com/php-abnormal-process-investigation/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Wed, 30 Nov 2016 03:02:51 +0000</pubDate>
				<category><![CDATA[Computer Language]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Problem]]></category>
		<category><![CDATA[Foundation]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Operation System]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Original]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=9350</guid>

					<description><![CDATA[在有些时候，会遇到 PHP 进程异常卡死的情况。面对这种情况，首先考虑到的就是分析代码进行优化改进，或者重启进程。但是，这种方式来排查不一定能找到根本原因。因为有些时候异常 PHP 进程卡死的原因可能是非常奇葩的问题，比如外部资源异常如 DB、Redis 或第三方 API 等。上一次关于超级话题签到提醒定时任务 PHP 进程异常的处理，问题竟然出现在外部的 DB 的链接上。由于网络原因导致读取 DB 没有响应卡死。 这一次情况比较严重，超级话题积分系统的计算有一部分是通过 Trigger（类似队列）接受全站数据进行积分计算与入库。由于用户反馈问题，来到队列机查看进程情况。如下： 之后，我们查看某个进程的处理日志。如下： 发现进程（pid 10693）在重启之后卡主。 于是利用 strace 查看进程处理过程： 如 strace 信息可以看出，该异常 PHP 进程一直在循环的读取，貌似进入死循环： 接着利用 lsof 来查看该进程的所有链接资源，如下： 所以，可以看出该 PHP 异常进程是在不断的读取 FD 值为 4u 对应的资源，该资源正式 trigger 的服务资源。 通过上述的判断，可以初步断定出现在 trigger 服务上，接着就是找相关部门的人继续深入排查了。 注：已处理敏感信息，如有问题请及时联系站长。]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/php-abnormal-process-investigation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>自从有了她，再也不怕断签了：超级话题签到提醒</title>
		<link>https://blog.ihuxu.com/check-in-push-for-super-topic-at-weibo/</link>
					<comments>https://blog.ihuxu.com/check-in-push-for-super-topic-at-weibo/#respond</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Tue, 25 Oct 2016 06:24:37 +0000</pubDate>
				<category><![CDATA[Computer Language]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technical Summary]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Original]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=7394</guid>

					<description><![CDATA[前言 在解决了上一次关于超级话题积分bug后，又接到超级话题签到提醒的产品需求。这是一篇偏于技术实现的文章，讲述的比较笼统，业务围绕超级话题的签到提醒进行展开。如果，您对超级话题签到提醒的技术背景与实现感兴趣，那么这篇文章希望对你有帮助。 当然，如果你是某个超级话题的超级粉丝，比如鹿晗，张艺兴，但是发现断签了。那么我非常替你感到“痛心”，因为目前超级话题没有补签功能。当然，如果你觉得是因为系统问题导致没有连续签到，那么你可以通过超级话题的官方反馈方式进行反馈来解决问题。当然，我劝你这么做之前一定要三思。因为，通过我排查的经验而言，基本山是由于你们（用户）把时间搞错了，而导致没有续签。而且，目前的签到提醒功能会在每天晚上提醒你签到的哦~ 产品 最近，在忙活超级话题的签到提醒产品的开发。首先，这是第一次比较热切的关注用户反应的产品。虽然说，对于产品的参与和认知并没有多么深入的理解，但是愈发的觉得这件事很有意识，也更想参与其中。 超级话题打破了传统话题的模式，以社区的形式展现，提高用户互动与粘性。其中，签到是不可或缺的一项功能。然而在前期，签到功能在给用户带来了高回访的情况下，也有着苦恼。作为研发同学，更是备受折磨。为什么？产品总是拿着反馈中自称经签过但却莫名断签的用户ID找我排查问题所在。然而，几乎都是一些凌晨时分签到而次日未签的情形。尽管是这样，用户的反感也是无法消除的。 为了不再做反复的排查劳动，只好做了一个相关查询后台。 产品同学为了召回用户，提供话题的UV和PV，提出了签到提醒的概念。 签到提醒会根据当前用户的签到行为，进行提醒私信的推送。目前为止，基本上每日需要提醒的量大约在85w左右。然而，在发送私信的过程中并非如此顺利。 技术 首先，要进行数据的准备。利用crontab定时将DB中的数据写入磁盘文件。之所以这么做，主要是由于DB中的数据是动态的，需要将数据写成静态的形式以更好的分批处理。 然仍采用crontab定时启动发送私信的脚本。将启动n个进程，同时处理上述步骤生成的n个文件。以curl_multi的方式批量调用话题粉丝服务的内部接口。 数据 超级话题提醒私信下发量：85W/日 超级话题提醒倒流UV：可观 下面的Redis服务中Key的曲线图，可以约等于下发的私信量： 问题 在形成上面的技术流程之前，也是经过了几番周折。 最初，以单进程的方式直接从DB读取数据，单次调用粉丝服务的接口进行发送私信。然而，在这种情况下，每日（2.5个小时）却只能发送5-6w的私信量。 由于压力主要在外部粉丝服务接口上，所以采取了批量调用的方式。利用PHP中的curl_multi，逢10批量调用粉丝服务接口。这样下来，每日（5.5个小时）能发送51w左右的私信。 然而，还是不能满足近100w的私信调用量。所以，增加了数据准备阶段。将数据写成静态文件，以多个进程的形式，同时处理文件以批量调用粉丝服务接口来发送私信。 在功能上线的第一天晚间，观察处理文件的进程“卡死”。 从上面两图可以确定，PHP进程卡死的原因在于读取MySQL服务中。进过排查处理后，程序得以进入正常流程。 目前为止，每日的调用量完全可以满足所需要发送的私信量。 用户 用户对签到提醒的反馈还是非常不错的，有图为证： 总结 针对于这种需要长时间运行与调用外部资源的脚本，最重要的就行要进行好完善的异常处理机制。由于PHP脚本的异常处理并非强制的，如果处理不妥到，会导致进程直接终止，排查起来也很困难。 同时，对于相关资源的监控也很重要。比如，当前机器的CPU资源，接口的平均响应时间，DB服务的相应时间等等。以确定每次执行期间相关资源的健康状态。]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/check-in-push-for-super-topic-at-weibo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Powerline 插件安装之 Vim 篇（Mac）</title>
		<link>https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/</link>
					<comments>https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/#comments</comments>
		
		<dc:creator><![CDATA[HU Xiaoxu]]></dc:creator>
		<pubDate>Thu, 23 Jun 2016 07:23:57 +0000</pubDate>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Dev Tool]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Original]]></category>
		<category><![CDATA[Powerline]]></category>
		<category><![CDATA[VIM]]></category>
		<guid isPermaLink="false">http://www.ihuxu.com/blog/?p=912</guid>

					<description><![CDATA[Powerline 是 Vim 的状态栏插件，同时也提供状态栏和提示窗口功能给其他一些应用，包括 zsh，bash，Tmux，IPython，Awesome，i3 和 Qtile。这篇文字只谈 Vim 上的安装。 环境与工具 系统：OS X EI Capitan version 10.11.5 终端：Terminal Vim ：v7.4.1914 Xcode: 7.3.1（Xcode 的版本过低会影响一些依赖库的安装，我在 6.5 的情况下安装一些软件会出些问题，避免麻烦升级下） Python：3.5.1 源码： python: https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz vim: https://github.com/vim/vim/archive/v7.4.1949.tar.gz 安装 Python ./configure&#160; --prefix=/usr/local/python351 make &#38; make install Vim Vim 的安装需要使用 Python 的配置 ./configure --prefix=/usr/local/vim741949 --enable-multibyte --with-tlib=ncurses --enable-cscope --with-features=big --with-python3-config-dir=/usr/local/python351/lib/python3.5/config-3.5m --enable-pythoninterp make &#38; make install 字体 将源码（https://github.com/powerline/fonts）clone 到本地后，执行如下命令： ./install.sh 配置 .vimrc 我是用 Vundle 来管理 Vim 插件的，所以需要配置如下项: Plugin 'powerline/powerline'&#160; 在 Vim<div class="read-more"><a class="btn read-more-btn" href="https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/">Read More</a></div>]]></description>
		
					<wfw:commentRss>https://blog.ihuxu.com/the-powerline-plugin-installation-in-vim/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
