ocean

匿名

9 月 182010
 

table_cache指示表高速缓存的大小。当Mysql访问一个表时,如果在Mysql表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区,这样做的好处是可以更快速地访问表中的内容。一般来说,可以通过查看数据库运行峰值时间的状态值Open_tables和Opened_tables,用以判断是否需要增加table_cache的值,即如果open_tables接近table_cache的时候,并且Opened_tables这个值在逐步增加,那就要考虑增加这个值的大小了。

  在mysql默认安装情况下,table_cache的值在2G内存以下的机器中的值默认时256到512,如果机器有4G内存,则默认这个值是 2048,但这非意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。所以平时维护中还是要根据库的实际情况去作出判断,找到最适合你维护的库的 table_cache值,有人说:“性能优化是一门艺术”,这话一点没错。大凡艺术品,大都是经过千锤百炼,精雕细琢而成。 Continue reading »

9 月 182010
 

最近,帮一个朋友优化一个拥有20万主题,100万帖子,3万多会员,平均在线人数2000人的Discuz!论坛,采用Linux2.6+Apache2+mod_php5+MySQL5,服务器配置为双至强+4G内存,优化前,系统平均负载(load average)基本维持在10以上,MySQL的CPU占用率基本在90%以上,优化后,系统平均负载降到0.5以下,MySQL的CPU占用率很少有超过10%的时候。优化前YSlow得分只有35分,优化后YSlow得分86分。现将优化的过程和经验做一个记录:

首先,对Apache进行优化,编辑httpd.conf,设置HostnameLookups、KeepAlive、 MaxKeepAliveRequests以及KeepAliveTimeout四个参数,调整MaxSpareServers、 ServerLimit、MaxClients以及MaxRequestsPerChild参数,还可以考虑弃用prefork而采用worker MPM。设置mod_deflate及mod_expires模块,不过注意Discuz!不能对PHP文件开启Expires,否则会出现问题。另外还可以考虑开启mod_cache和mod_mem_cache模块。另外利用cronolog按天对日志进行轮循截断,如果日志特别大,也可以按小时截断。另外再加上Awstats对日志进行分析,并用gzip对日志进行压缩,自动删除1个月前的日志。

其次,对PHP进行优化,编辑php.ini,调整output_buffering、zlib.output_compression及 max_execution_time、max_input_time、memory_limit等参数,并安装Xcache和Zend Optimizer。

然后对MySQL进行优化。 Continue reading »

9 月 182010
 

Apache 是老牌子的网站服务器,论功能和插件,是无出其右,但是论性能,很多新手已经把 Apache 甩在后面,如 lighttpd, Nginx。在更换Web服务器软件这类激进的动作之前,你应该考虑一下:如果您拥有足够多的内存来应付现有的并发访问的话,建议你还是继续使用 Apache,但是作些性能上的调校是应该的。

关于 ServerLimit  和 MaxClients
MaxClients 参数决定了 Apache 最大并发访问数。

对于 mpm_prefork,如果 MaxClients 设置超过了 256,就需要对 ServerLimit 设置,ServerLimit 应该和 MaxClients 一样,至少不小于 MaxClient。

对于 mpm_worker,如果 MaxClients 除以 ThreadsPerChild  超过了 16,就要对 ServerLimit 进行设置。ServerLimit 乘以 ThreadsPerChild 要大于等于 MaxClients。

MaxClients 不是随意设定的
像 Apache 这样重量级的软件,内存消耗是很大的。MaxClients 的计算规则是 Apache 可占用的物理内存,除以单个 Apache进程的内存占用。

因此并发数直接取决于内存的大小。然而如果内存足够大,而配置文件没有跟上,岂不是吃亏? Continue reading »

9 月 172010
 

1.         数据准备。对于 CDN 的 Silicon Ensemble而言后端设计所需的数据主要有是
Foundry厂提供的标准单元、宏单元和I/O Pad的库文件,它包括物理库、时序库及网表库
,分别以.lef、.tlf和.v的形式给出。前端的芯片设计经过综合后生成的门级网表,具有
时序约束和时钟定义的脚本文件和由此产生的.gcf约束文件以及定义电源Pad的DEF(Desi
gn Exchange Format)文件。(对synopsys 的Astro 而言, 经过综合后生成的门级网表,
时序约束文件 SDC 是一样的,Pad的定义文件–tdf   , .tf 文件 –technology file,
Foundry厂提供的标准单元、宏单元和I/O Pad的库文件 就与FRAM, CELL view, LM view
形式给出(Milkway 参考库 and DB, LIB file) Continue reading »

9 月 172010
 

IBM工程师培训的时候,讲到了一个IC设计前端、后端的概念,虽然我们参赛的内容主要是做应用,但面临读研方向的选择,还是到网上找了点资料,了解了一下。

   在EDNChina论坛上有一篇帖子:什么是IC前端设计和后端设计?区别有是什么?
http://bbs.ednchina.com/?url=http%3A//bbs.ednchina.com/ShowTopic.aspx%3Fid%3D6456%26page%3D2
问题:我是刚刚接触这方面不久,所以迫切想了解一下: 1.什么是大家常的IC前端设计和后端设计?他们之间的区别是什么? 2.做前端设计和后端设计需要掌握哪些最基本的工具和知识呢?比如多手机或者其他娱乐型电子产品上的IC设计. 3.对于不太精通编程,但对数字和模拟电路有一定基础的人是适合做前端,还是后端呢?

整理的回帖如下:

   首先,我不算是高人,不过前,后端都有接触,我就大概回答一下吧,有说的不对的地方,请高人指正。 1,前端主要负责逻辑实现,通常是使用verilog/VHDL之类语言,进行行为级的描述。而后端,主要负责将前端的设计变成真正的 schematic&layout,流片,量产。打个比喻来说,前端就像是做蓝图的,可以功能性,结构性的东西。而后端则是将蓝图变成真正的高楼。 2,前端设计主要是进行功能设计,代码的编写,要会使用硬件描述语言,也就是上面有提到的verilog/VHDL等,当然,也会要使用一些仿真软件。后端设计需要的则会更加多一些了,包括综合,到P&R,以及最后的STA,这些工具里candence和synopsys都有一整套系统的。有关心的可以去他们的网站看看。 3,其实前端和后端对于编程没有特别的要求。前端的设计会需要使用硬件描述语言来写代码,但是,需要注意的是,这里指的是”描述”,而不像是C或者 java之类的强调编程技巧啊什么的。所以,这个选择就看你自己了,而与编程没有什么特别的关系了。

glclub 后端設計主要要求哪些技能呢?譬如在ic layout過程中要求那些軟件呢? :包括综合,到P&R,以及最后的STA ,这些是我上面的提到的,各个公司根据需要,还会有不同的其它的要求。另外,我不是特别清楚你指的”ic layout”是什么概念,P&R的话有candence soc-encounter /synopsys Astro,手工的话,有candence virtuoso。 jasonxia 前端设计除了要会verilog/VHDL之外,还有什么要求呢?我本身是做后端的,所以,对于前端的要求也不是特别的清楚。根据我的认识,前端会分为设计部和验证部,设计部更加的注重算法、工作原理等方面,毕竟用verilog实现起来并不困难。而验证部就是保证设计的正确性。至于具体有什么样的要求,我也就不是特别的清楚了。 Continue reading »

9 月 172010
 

设定规则 iptables -p INPUT DROP
iptables -p OUTPUT ACCEPT
iptables -p FORWARD DROP

1、防止外网用内网IP欺骗
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
   查看nat规则
iptables -t nat -L

2、如果想取消上面所加的规则:
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat

3、阻止一个IP连接本机
iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP Continue reading »

9 月 172010
 

虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等。通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长。比较彻底的解决方法是添置硬件防火墙。不过,硬件防火墙价格比较昂贵。可以考虑利用Linux 系统本身提供的防火墙功能来防御。

抵御SYN SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。
Linux内核提供了若干SYN相关的配置,用命令: sysctl -a | grep syn 看到:
net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5 net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie 功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN 的重试次数。加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。 Continue reading »

9 月 172010
 

一般LINUX防火墙(iptalbes)的运用无非是用nat 表(PREROUTING、OUTPUT、POSTROUTING)和filter表(FORWARD、INPUT、OUTPUT)。我们只有知道了数据的流向才能正确的配置防火墙。现用一个相对比较直观的图形解释数据的走向。

(此处只作最基本的iptables数据流走向说明。)

上图是你的家,蓝色的圈是你家院子,有两扇大门①⑥进出,你家有两个房间,分别为eth0和 eth1房间,每个房间有两个门可以进出②③④⑤。旁边是张三和李四的家,张三家和李四家之间的往返必须要过你家院子。

现假设,eth0网卡IP为:192.168.5.1链接内网,eth1网卡IP为:218.100.100.111链接互连网。

再假设,“张三家”为一个局域网,“李四家”为互连网。进我家院子用PREROUTING,出我家院子用FORWARD,进我家门用INPUT,出我家门用OUTPUT。(当我们的操作是征对服务器本身而言的话,如SSH操作,此时肯定会用到PREROUTING、INPUT和OUTPUT,当数据只是通过服务器去访问别的机器时会用到PREROUTING和FORWARD。) Continue reading »