<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[静怡家园]]></title> 
<link>http://www.zhanghaijun.com/index.php</link> 
<description><![CDATA[书山有路勤为径，学海无涯苦作舟！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[静怡家园]]></copyright>
<item>
<link>http://www.zhanghaijun.com/post//</link>
<title><![CDATA[Linux利器 strace]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[Linux技术]]></category>
<pubDate>Tue, 23 Jul 2013 20:10:27 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//</guid> 
<description>
<![CDATA[ 
	strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界，进程不能直接访问硬件设备，当进程需要访问硬件设备(比如读取磁盘文件，接收网络数据等等)时，必须由用户态模式切换至内核态模式，通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数，返回值，执行消耗的时间。<br/><br/>strace使用参数<br/>-p 跟踪指定的进程<br/>-f 跟踪由fork子进程系统调用<br/>-F 尝试跟踪vfork子进程系统调吸入，与-f同时出现时, vfork不被跟踪<br/>-o filename 默认strace将结果输出到stdout。通过-o可以将输出写入到filename文件中<br/>-ff 常与-o选项一起使用，不同进程(子进程)产生的系统调用输出到filename.PID文件<br/>-r 打印每一个系统调用的相对时间<br/>-t 在输出中的每一行前加上时间信息。 -tt 时间确定到微秒级。还可以使用-ttt打印相对时间<br/>-v 输出所有系统调用。默认情况下，一些频繁调用的系统调用不会输出<br/>-s 指定每一行输出字符串的长度,默认是32。文件名一直全部输出<br/>-c 统计每种系统调用所执行的时间，调用次数，出错次数。<br/>-e expr 输出过滤器，通过表达式，可以过滤出掉你不想要输出<br/><br/>应用场景<br/>#1.跟踪你的web服务器系统调用<br/>系统调用优化，也是web性能优化的一个较为重要的方向，尤其是在I/O密集型web应用的情况。我们这里的测试环境是CentOS5.4+Nginx+FastCGI。<br/><br/><?php<br/>//file:hello.php<br/>define('DOCUMENT_ROOT', dirname(__FILE__));<br/>include("hello.inc");<br/>include("./hello.inc");<br/>include(DOCUMENT_ROOT . "/hello.inc");<br/>?><br/>#strace -f -F -o strace_nginx strace /wwwchroot/nginx/sbin/nginx -c /wwwchroot/nginx/nginx.conf<br/>... (有部分不重要的数据影响排版，在这里使用...代替)<br/>//--接受来自客户端的http请求<br/>4165&nbsp;&nbsp;recv(16, "GET /hello.php HTTP/1.1&#92;r&#92;nHost: f"..., 32768, 0) = 391<br/>4165&nbsp;&nbsp;epoll_ctl(9, EPOLL_CTL_MOD, 16, &#123;EPOLLIN&#124;EPOLLOUT&#124;EPOLLET, &#123;u32=3081162952, u64=698098541354471624&#125;&#125;) = 0<br/>//--进行DNS查找<br/>4165&nbsp;&nbsp;getsockname(16, &#123;sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("222.73.211.214")&#125;, [16]) = 0<br/>//--新建一个socket，连接Fast-CGI,端口号为9000<br/>4165&nbsp;&nbsp;socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 17<br/>4165&nbsp;&nbsp;ioctl(17, FIONBIO, [1])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4165&nbsp;&nbsp;epoll_ctl(9, EPOLL_CTL_ADD, 17, &#123;EPOLLIN&#124;EPOLLOUT&#124;EPOLLET, &#123;u32=3081163048, u64=697886249710965032&#125;&#125;) = 0<br/>4165&nbsp;&nbsp;connect(17, &#123;sa_family=AF_INET, sin_port=htons(9000), sin_addr=inet_addr("127.0.0.1")&#125;, 16) = -1 )<br/>4165&nbsp;&nbsp;epoll_wait(9, &#123;&#123;EPOLLOUT, &#123;u32=3081163048, u64=697886249710965032&#125;&#125;, &#123;...&#125;, 5&#92;<br/>12, 300000) = 2<br/>4165&nbsp;&nbsp;gettimeofday(&#123;1295420285, 130967&#125;, NULL) = 0<br/>4165&nbsp;&nbsp;recv(16, 0xbfdd7d8b, 1, MSG_PEEK) = -1 EAGAIN (Resource temporarily unavailable)<br/>4165&nbsp;&nbsp;getsockopt(17, SOL_SOCKET, SO_ERROR, [0], [4]) = 0<br/>//--将用户http请求交给Fast-CGI<br/>4165&nbsp;&nbsp;writev(17, [&#123;"&#92;1&#92;1&#92;0&#92;1&#92;0&#92;10&#92;0&#92;0&#92;0&#92;1&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;1&#92;4&#92;0&#92;1&#92;3&#92;30&#92;0&#92;0&#92;21&#92;7GATEWA"..., 832&#125;], 1) = 832<br/>4165&nbsp;&nbsp;epoll_wait(9, &#123;&#123;EPOLLIN&#124;EPOLLOUT, &#123;u32=3081163048, u64=697886249710965032&#125;&#125;&#125;, 512, 300000) = 1<br/>4165&nbsp;&nbsp;gettimeofday(&#123;1295420285, 131559&#125;, NULL) = 0<br/>//--接收Fast-CGI响应<br/>4165&nbsp;&nbsp;recv(17, "&#92;1&#92;6&#92;0&#92;1&#92;0V&#92;2&#92;0X-Powered-By: PHP/5.2.10"..., 65536, 0) = 112<br/>4165&nbsp;&nbsp;readv(17, [&#123;"&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0"..., 65424&#125;], 1) = 0<br/>4165&nbsp;&nbsp;mmap2(NULL, 274432, PROT_READ&#124;PROT_WRITE, MAP_PRIVATE&#124;MAP_ANONYMOUS, -1, 0) = 0xb7514000<br/>4165&nbsp;&nbsp;close(17)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4165&nbsp;&nbsp;munmap(0xb7514000, 274432)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/>//-- 响应客户端http请求,即http响应<br/>4165&nbsp;&nbsp;writev(16, [&#123;"HTTP/1.1 200 OK&#92;r&#92;nServer: nginx/0"..., 228&#125;, &#123;"22&#92;r&#92;n", 4&#125;, ..., 5) = 273<br/>4165&nbsp;&nbsp;write(5, "116.66.34.82 - - [19/Jan/2011:14"..., 191) = 191<br/>4165&nbsp;&nbsp;setsockopt(16, SOL_TCP, TCP_NODELAY, [1], 4) = 0<br/>4165&nbsp;&nbsp;recv(16, 0x9b024e8, 32768, 0)&nbsp;&nbsp;&nbsp;&nbsp; = -1 EAGAIN (Resource temporarily unavailable)<br/>...<br/><br/>通过这些,我们只能够大概地了解，Nginx这里启用了epoll。同时，还可以了解到Nginx和Fast-CGI底层是如何运作的。奇怪，hello.php文件中有三个inclue，即加载了三次文件，这里没有看到相应的i/o逻辑操作，是为什么呢？这是因为，Nginx并没解析处理PHP脚本，而是交给Fast-CGI去做这部事情了。<br/><br/>#strace -f -F -o php-cgi-strace /wwwchroot/php/bin/php-cgi --fpm-config /wwwchroot/php/etc/php-fpm.conf<br/>//--接收来自Nginx发出的请求<br/>4510&nbsp;&nbsp;<... accept resumed> &#123;sa_family=AF_INET, sin_port=htons(35983), sin_addr=inet_addr("127.0.0.1")&#125;, [16]) = 3<br/>4510&nbsp;&nbsp;clock_gettime(CLOCK_MONOTONIC, &#123;22638545, 869965681&#125;) = 0<br/>4510&nbsp;&nbsp;poll([&#123;fd=3, events=POLLIN&#125;], 1, 5000) = 1 ([&#123;fd=3, revents=POLLIN&#125;])<br/>4510&nbsp;&nbsp;read(3, "&#92;1&#92;1&#92;0&#92;1&#92;0&#92;10&#92;0&#92;0", 8)&nbsp;&nbsp; = 8<br/>4510&nbsp;&nbsp;read(3, "&#92;0&#92;1&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0", 8)&nbsp;&nbsp;&nbsp;&nbsp;= 8<br/>4510&nbsp;&nbsp;read(3, "&#92;1&#92;4&#92;0&#92;1&#92;0035&#92;3&#92;0", 8)&nbsp;&nbsp; = 8<br/>4510&nbsp;&nbsp;read(3, "&#92;21&#92;7GATEWAY_INTERFACECGI/1.1&#92;17&#92;5SERV"..., 824) = 824<br/>4510&nbsp;&nbsp;read(3, "&#92;1&#92;4&#92;0&#92;1&#92;0&#92;0&#92;0&#92;0", 8)&nbsp;&nbsp;&nbsp;&nbsp;= 8<br/>4510&nbsp;&nbsp;time(NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1295425149<br/>//--加载请求资源文件hello.php<br/>4510&nbsp;&nbsp;lstat64("/var", &#123;st_mode=S_IFDIR&#124;0755, st_size=4096, ...&#125;) = 0<br/>4510&nbsp;&nbsp;lstat64("/var/www", &#123;st_mode=S_IFDIR&#124;0755, st_size=4096, ...&#125;) = 0<br/>4510&nbsp;&nbsp;lstat64("/var/www/ep", &#123;st_mode=S_IFDIR&#124;0755, st_size=4096, ...&#125;) = 0<br/>4510&nbsp;&nbsp;lstat64("/var/www/ep/hello.php", &#123;st_mode=S_IFREG&#124;0644, st_size=119, ...&#125;) = 0<br/>4510&nbsp;&nbsp;clock_gettime(CLOCK_MONOTONIC, &#123;22638545, 870893872&#125;) = 0<br/>4510&nbsp;&nbsp;setitimer(ITIMER_PROF, &#123;it_interval=&#123;0, 0&#125;, it_value=&#123;60, 0&#125;&#125;, NULL) = 0<br/>4510&nbsp;&nbsp;rt_sigaction(SIGPROF, &#123;0x835c120, [PROF], SA_RESTART&#125;, &#123;SIG_DFL, [], 0&#125;, 8) = 0<br/>4510&nbsp;&nbsp;rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0<br/>4510&nbsp;&nbsp;time(NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1295425149<br/>4510&nbsp;&nbsp;open("/var/www/ep/hello.php", O_RDONLY) = 4<br/>4510&nbsp;&nbsp;fstat64(4, &#123;st_mode=S_IFREG&#124;0644, st_size=119, ...&#125;) = 0<br/>4510&nbsp;&nbsp;time(NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1295425149<br/>4510&nbsp;&nbsp;chdir("/var/www/ep")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/>4510&nbsp;&nbsp;fstat64(4, &#123;st_mode=S_IFREG&#124;0644, st_size=119, ...&#125;) = 0<br/>4510&nbsp;&nbsp;mmap2(NULL, 4096, PROT_READ&#124;PROT_WRITE, MAP_PRIVATE&#124;MAP_ANONYMOUS, -1, 0) = 0xb7fe7000<br/>4510&nbsp;&nbsp;read(4, "&#92;n", 8192) = 29<br/>4510&nbsp;&nbsp;read(4, "", 8192)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;read(4, "", 8192)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;close(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/>//--&nbsp;&nbsp;加载hello.inc, 对应php代码include './hello.inc'<br/>4510&nbsp;&nbsp;getcwd("/var/www/ep"..., 4096)&nbsp;&nbsp;&nbsp;&nbsp;= 12<br/>4510&nbsp;&nbsp;time(NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1295425149<br/>4510&nbsp;&nbsp;open("/var/www/ep/hello.inc", O_RDONLY) = 4<br/>4510&nbsp;&nbsp;fstat64(4, &#123;st_mode=S_IFREG&#124;0644, st_size=29, ...&#125;) = 0<br/>4510&nbsp;&nbsp;read(4, "&#92;n", 8192) = 29<br/>4510&nbsp;&nbsp;read(4, "", 8192)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;read(4, "", 8192)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;close(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/>4510&nbsp;&nbsp;time(NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1295425149<br/>//-- 加载hello.inc, 对应php代码include DOCUMENT_ROOT . '/hello.inc'<br/>4510&nbsp;&nbsp;lstat64("/var", &#123;st_mode=S_IFDIR&#124;0755, st_size=4096, ...&#125;) = 0<br/>4510&nbsp;&nbsp;lstat64("/var/www", &#123;st_mode=S_IFDIR&#124;0755, st_size=4096, ...&#125;) = 0<br/>4510&nbsp;&nbsp;lstat64("/var/www/ep", &#123;st_mode=S_IFDIR&#124;0755, st_size=4096, ...&#125;) = 0<br/>4510&nbsp;&nbsp;lstat64("/var/www/ep/hello.inc", &#123;st_mode=S_IFREG&#124;0644, st_size=29, ...&#125;) = 0<br/>4510&nbsp;&nbsp;open("/var/www/ep/hello.inc", O_RDONLY) = 4<br/>4510&nbsp;&nbsp;fstat64(4, &#123;st_mode=S_IFREG&#124;0644, st_size=29, ...&#125;) = 0<br/>4510&nbsp;&nbsp;read(4, "&#92;n", 8192) = 29<br/>4510&nbsp;&nbsp;read(4, "", 8192)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;read(4, "", 8192)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;close(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/>//-- 将响结果输出给Nginx，并且关闭连接<br/>4510&nbsp;&nbsp;write(3, "&#92;1&#92;6&#92;0&#92;1&#92;0V&#92;2&#92;0X-Powered-By: PHP/5.2.10"..., 96) = 96<br/>4510&nbsp;&nbsp;setitimer(ITIMER_PROF, &#123;it_interval=&#123;0, 0&#125;, it_value=&#123;0, 0&#125;&#125;, NULL) = 0<br/>4510&nbsp;&nbsp;write(3, "&#92;1&#92;3&#92;0&#92;1&#92;0&#92;10&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0&#92;0ere", 16) = 16<br/>4510&nbsp;&nbsp;shutdown(3, 1 /* send */)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;recv(3, "&#92;1&#92;5&#92;0&#92;1&#92;0&#92;0&#92;0&#92;0", 8, 0) = 8<br/>4510&nbsp;&nbsp;recv(3, "", 8, 0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>4510&nbsp;&nbsp;close(3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/><br/>通过跟踪php-cgi，我们可以知道，相较与其它二种方法include ‘./hello.inc’的性能是最高的。这里看到strace输出都被截断了，如果你需要看到更多的输出，可以通过-s选项，让strace输出更多内容。<br/><br/>当你发现某个http请求造成CPU占用效骤然升高，你可以通过strace跟踪查找问题的根源。同时，你也可以通过strace -c统计监控你的优化是否生效<br/>#2. MySQL执行语句列表<br/>当发生个http请求的时候，很多时候希望得到这个http请求发生了多少次数据库SELECT操作，是否在同一个mysql connection连接里面完成。这里以访问本页为例子，通过strace来跟踪这些MySQL SELECT查询语句。<br/><br/>//-9514是mysqld的进程号,为了看到整条SQL语句,我们通过-s 1024希望输出更多内容<br/>#strace -f -F -ff -o strace-mysqld -s 1024 -p 9514<br/>#find . -name "strace-mysqld*" -type f -print &#124;xargs grep -n "SELECT.*FROM wp_"<br/>./strace-mysqld.19203:64:<br/>read(19, "&#92;3SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'", 72) = 72<br/>./strace-mysqld.19203:165:<br/>read(19, "&#92;3SELECT * FROM wp_users WHERE user_login = 'admin'", 50) = 50<br/>./strace-mysqld.19203:184:<br/>read(19, "&#92;3SELECT meta_key, meta_value FROM wp_usermeta WHERE user_id = 1", 63) = 63<br/>./strace-mysqld.19203:295:<br/>read(19, "&#92;3SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1", 80) = 80<br/>./strace-mysqld.19203:311:<br/>read(19, "&#92;3 SELECT&nbsp;&nbsp; wp_posts.* FROM wp_posts&nbsp;&nbsp;WHERE 1=1&nbsp;&nbsp;AND wp_posts.ID = 501<br/>&nbsp;&nbsp;&nbsp;&nbsp; AND wp_posts.post_type = 'post'&nbsp;&nbsp;ORDER BY wp_posts.post_date DESC ", 136) = 136<br/>... (这里省去了一些)<br/><br/>其他<br/>strace远不止这么强大，你可以善用之，我想你会离不开它的。同时，你还可以联合gdb和ltrace，你的工作会更加高效。<br/>Tags - <a href="http://www.zhanghaijun.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.zhanghaijun.com/tags/strace/" rel="tag">strace</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post//#blogcomment</link>
<title><![CDATA[[评论] Linux利器 strace]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>