Archive for February, 2013

作者:AngryFox 分类: Uncategorized February 26th, 2013 暂无评论

全球负载均衡技术(GSLB,Global Server Load Balance)是一种将SLB的概念扩展到广域范围的技术,与SLB在一个单独的节点上为一组服务器提供负载均衡服务不同,GSLB提供了一种对多个地 域不同的服务器群(多个节点)提供负载均衡的服务,在实现上可以分为两个方面,一方面是如何实现将用户的请求指向到选定的节点上,一方面是研究如何确定最 佳的站点。ChinaCache GSLB服务可以对分布在不同地域的多个源站服务器群提供全球负载均衡服务,我们采用DNS解析的方式来实现用户访问重定向,同时采用智能策略确定最佳源 站点,提高了服务的可用性和系统性能。

用户在自己的浏览器中输入要访问的网站的域名www.domain.com 浏览器向本地DNS请求对该域名的解析 本地DNS将解析请求发到ICP的授权域名服务器(Authoritative DNS),授权域名服务器通知本地DNS,相应频道的别名是www.sub-domain.domain.com, 并且sub-domain.domain.com的授权域名服务器已经是GSLB控制器(GAC) 本地DNS向GSLB控制器发出域名解析请求 GSLB控制器(GAC)根据预设策略,选择最佳节点,并将结果(IP地址)返回本地DNS 本地DNS将对应的IP地址发给用户 用户向最佳节点发出请求 源站节点中的Cache服务器响应用户的请求,提供相关内容

 

http://virtualadc.blog.51cto.com/3027116/624466

作者:AngryFox 分类: Uncategorized February 24th, 2013 暂无评论

sphinx配置文件mkmfcm.conf如下:

<pre>
<ol>
	<li>#名可名非常名 主索引源</li>
	<li>source mkmfcm_main</li>
	<li>{</li>
	<li>    type		= mysql</li>
	<li>    sql_host		= localhost</li>
	<li>    sql_user		= root</li>
	<li>    sql_pass		= root</li>
	<li>    sql_db		= mkmfcm</li>
	<li>    sql_port		= 3306</li>
	<li>    sql_query_pre	= SET NAMES utf8</li>
	<li>    sql_query_pre	= REPLACE INTO sph_counter SELECT 1, MAX(forum_id) FROM forum</li>
	<li>    sql_query		= SELECT forum_id as id, forum_title, forum_content FROM forum</li>
	<li>}</li>
	<li>#名可名非常名 增量索引源</li>
	<li>source mkmfcm_delta : mkmfcm_main</li>
	<li>{</li>
	<li>    sql_query_pre	= SET NAMES utf8</li>
	<li>    sql_query		= SELECT forum_id as id, forum_title, forum_content FROM forum \</li>
	<li>				WHERE forum_id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )</li>
	<li>}</li>
	<li></li>
	<li>#名可名非常名 主索引</li>
	<li>index question_main</li>
	<li>{</li>
	<li>    source		= mkmfcm_main	#对应的source名称</li>
	<li>    path		= /usr/local/coreseek/var/data/question_main</li>
	<li>    docinfo		= extern</li>
	<li>    mlock		= 0</li>
	<li>    morphology		= none</li>
	<li>    min_word_len        = 2</li>
	<li>    html_strip		= 0</li>
	<li></li>
	<li>    charset_dictpath	= /usr/local/mmseg/etc/ #BSD、Linux环境下设置,/符号结尾</li>
	<li>    charset_type	= zh_cn.utf-8</li>
	<li>}</li>
	<li>#名可名非常名 增量索引</li>
	<li>index question_delta : question_main</li>
	<li>{</li>
	<li>    source		= mkmfcm_delta</li>
	<li>    path		= /usr/local/coreseek/var/data/question_delta</li>
	<li>}</li>
	<li></li>
	<li>#全局索引配置</li>
	<li>indexer</li>
	<li>{</li>
	<li>    mem_limit            = 128M</li>
	<li>}</li>
	<li></li>
	<li>#searchd服务定义</li>
	<li>searchd</li>
	<li>{</li>
	<li>    listen		= 9312</li>
	<li>    #listen		= 9306:mysql41</li>
	<li>    read_timeout        = 5</li>
	<li>    max_children        = 30</li>
	<li>    max_matches		= 1000</li>
	<li>    seamless_rotate	= 0</li>
	<li>    preopen_indexes	= 0</li>
	<li>    unlink_old		= 1</li>
	<li>    pid_file		= /usr/local/coreseek/var/log/searchd_mysql.pid</li>
	<li>    log			= /usr/local/coreseek/var/log/searchd_mysql.log</li>
	<li>    query_log		= /usr/local/coreseek/var/log/query_mysql.log</li>
	<li>    binlog_path		=	#关闭binlog日志</li>
	<li>}</li>
</ol>
</pre>

索引更新方案有两种:

第一次创建全部索引: ./indexer -c /var/www/coreseek/mkmfcm.conf –all
运行检索监听程序:./searchd -c /var/www/coreseek/mkmfcm.conf
方案一:
每天凌晨3点合并索引:./indexer -c /var/www/coreseek/oseye.conf –merge question_main question_delta –rotate
每3分钟更新增量索引:./indexer -c /var/www/coreseek/oseye.conf question_delta –rotate
优缺点,合并非常快,但没办法更新索引最大值得,造成重复。
方案二:
每天凌晨3点重建主索引:./indexer -c /var/www/coreseek/oseye.conf question_main –rotate
每3分钟更新增量索引:./indexer -c /var/www/coreseek/oseye.conf question_delta –rotate
优缺点,速度慢,且有重复数据。

 目前先采用方案二,继续探寻其他方式,编辑/etc/crontab增加shell如下:
<pre>
<ol>
	<li>* */3	* * *	root	cd /usr/local/coreseek/bin && ./indexer -c /var/www/coreseek/mkmfcm.conf question_main --rotate</li>
	<li>*/3 *	* * *	root	cd /usr/local/coreseek/bin && ./indexer -c /var/www/coreseek/mkmfcm.conf question_delta --rotate</li>
</ol>
</pre>
重启cron:
<pre>
<ol>
	<li>/etc/init.d/cron restart</li>
	<li>运行
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf

#如要停止搜索服务,请使用
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf --stop

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf
##如要已启动服务,要更新索引,请使用
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --rotate

如果在启动过程中发现提示indexer错误,则重新启动indexer

./indexer --all

column number 1 has no name

可能是由于mysql类库不匹配所致。

搜索测试
/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/csft.conf -a Twittter和Opera都提供了搜索服务

重新构造词典
/usr/local/mmseg3/bin/mmseg -u unigram.txt
作者:AngryFox 分类: Uncategorized February 21st, 2013 暂无评论

术语说明:
QPS = req/sec = 请求数/秒

【QPS计算PV和机器的方式】

QPS统计方式 [一般使用 http_load 进行统计]
QPS = 总请求数 / ( 进程总数 *   请求时间 )
QPS: 单个进程每秒请求服务器的成功次数

单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8

服务器计算
服务器数量 =   ceil( 每天总PV / 单台服务器每天总PV )

【峰值QPS和机器计算公式】

原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS   = 需要的机器

问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3

作者:AngryFox 分类: Uncategorized February 21st, 2013 暂无评论
可恶的千千静听的json接口有Bom头

	if ( substr( $content, 0, 3 ) == "\xEF\xBB\xBF" ){
		$content = substr_replace( $content, '', 0, 3 );
	}
作者:AngryFox 分类: Uncategorized February 20th, 2013 暂无评论
http
{
  geoip_country /data2/GeoIP.dat;
  fastcgi_param GEOIP_COUNTRY_CODE  $geoip_country_code;
  fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
  fastcgi_param GEOIP_COUNTRY_NAME  $geoip_country_name;

  server
  {
               location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
		{
		  expires      30d;
		}

		location ~ .*\.(js|css)$
		{
		  expires      1h;
		}

	      location ~^/mv2012/html/
	     {
			set $flag 0;
			if ( $geoip_country_code != CN ){
				set $flag "${flag}1";
			}
			if ( $arg_v != "7400" )
			{
				set $flag "${flag}2";
			} 

			if ( $flag = "012" ){
				rewrite ^/(.*)$ http://www.baidu.com/check/ip.html?url=http://www2.baidu.com/$1?v=7400 last;
			}
	    }
       }
}