工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆
浏览模式: 标准 | 列表全部文章

Nginx 多核cpu 优化:(Core) + worker_processes (worker_cpu_affinity)

  1. 配置14 CPU (4 Core) + 4 worker_processes (每个worker_processes 使用1个CPU)   
  2. [reistlin@reistlin.com ~]$ cat /proc/cpuinfo | grep processor   
  3. processor       : 0  
  4. processor       : 1  
  5. processor       : 2  
  6. processor       : 3  
  7. worker_processes 4;   
  8. worker_cpu_affinity 0001 0010 0100 1000;   
  9. 配置28 CPU (8 Core) + 8 worker_processes (每个worker_processes 使用1个CPU)   
  10. [reistlin@reistlin.com ~]$ cat /proc/cpuinfo | grep processor   
  11. processor       : 0  
  12. processor       : 1  
  13. processor       : 2  
  14. processor       : 3  
  15. processor       : 4  
  16. processor       : 5  
  17. processor       : 6  
  18. processor       : 7  
  19. worker_processes 8;   
  20. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;   
  21. 配置316 CPU (16 Core) + 16 worker_processes (每个worker_processes 使用1个CPU)   
  22. [reistlin@reistlin.com ~]$ cat /proc/cpuinfo | grep processor   
  23. processor       : 0  
  24. processor       : 1  
  25. processor       : 2  
  26. processor       : 3  
  27. processor       : 4  
  28. processor       : 5  
  29. processor       : 6  
  30. processor       : 7  
  31. processor       : 8  
  32. processor       : 9  
  33. processor       : 10  
  34. processor       : 11  
  35. processor       : 12  
  36. processor       : 13  
  37. processor       : 14  
  38. processor       : 15  
  39. worker_processes 16;   
  40. worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 0000000000010000 0000000000100000 0000000001000000 0000000010000000 0000000100000000 0000001000000000 0000010000000000 0000100000000000 0001000000000000 0010000000000000 0100000000000000 1000000000000000 

linux csf 防火墙 防止少量的ddos cc攻击很有效

http://blog.51yip.com/server/1503.html

Incorrect key file for table mysql表损坏的修复方法

今天查询mysql的时候,报这样的错误,Incorrect key file for table './tg/dxad.MYI'; try to repair it. mysql表损坏的情况是很少见的,下面的方法适用于myisam,其他存储引擎,不知道能不能这样修复。
1,myisamchk修改表
查看复制打印?
[root@localhost tg]# myisamchk -of ./dxad.MYI     //修复第一步 
- recovering (with keycache) MyISAM-table './dxad.MYI' 
Data records: 12597637 
Found block that points outside data file at 1630252996 
Data records: 12597456 
[root@localhost tg]# myisamchk -r ./dxad.MYI     //修复第二步 
- recovering (with sort) MyISAM-table './dxad.MYI' 
Data records: 12597456 
- Fixing index 1 
[root@localhost tg]# myisamchk ./dxad.MYI     //修复第三步 
 
Checking MyISAM file: ./dxad.MYI 
Data records: 12597456   Deleted blocks:       0 
- check file-size 
- check record delete-chain 
- check key delete-chain 
- check index reference 
- check data record references index: 1 
- check record links 
myisamchk带的参数,可以用man看一下。操作后重新启动一下数据库。
[root@localhost tg]# /etc/init.d/mysqld restart 
这样操作后,还是有问题,会报 #145 - Table "XXXXX" is marked as crashed and should be repaired。如下图:

myisamchk 修复表后报的错误
2,命令行下repair修复表
查看复制打印?
mysql> repair table dxad;  //dxad是表名 
如下图

命令行下repair修复表成功
到这儿,myisam表损坏就修复好了。

MySQL MyISAM 表转换为InnoDB的方法

1.备份数据库: mysqldump -u[user] -p[password] [databasename] > [dbfile.sql] # 备份数据库。
2. /usr/local/mysql/bin/mysqladmin -u root -p shutdown # 停止数据库 或者 service mysql stop。
3. InnoDB 表不支持全文搜索(fulltext search),那么,记得要将备份出来的数据库sql,删掉有关 Fulltext 的索引。
4. cd /usr/local/mysql/support-files/ 找寻适合主机内存的设定文件,必将设定文件拷贝到 /etc/my.cnf。
5. vi /etc/my.cnf ,将以下几项批注取消掉。以 my-large.cnf 为例。

  innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
    加上 default-storage-engine=innodb 
加上这段之后,以后新增的数据表型态都即是 InnoDB,不然每次新增一次数据表,SQL 后面得加上 ENGINE=InnoDB;

6 .将刚刚备份出来的sql,将ENGINE=MyISAM改成ENGINE=InnoDB。
7. /usr/local/mysql/bin/safe_mysqld --user=mysql &  ,或service mysql start 启动数据库
8. 建立一个新的数据库(数据库名称跟备份出来的数据库名称一样)。
9. mysql -u[user] -p[password] [database_name] < [dbfile] # 将改好的数据汇入数据库中!

说明:
* 设定文件的选择是参照内存大小来选择。
my-huge.cnf - 1G~2G 、my-large.cnf - 512M 、 my-medium.cnf - 32M - 64M 、my-small.cnf <= 64M 。
InnoDB:my-innodb-heavy-4G.cnf
* 假如不会将备份出来的数据库改型态,那么您可以用下面这个指令,直接改变数据表的型态。

 ALTER TABLE [tablename] ENGINE=InnoDB 如有存放全文索引功能的话,转换会失败的。

* 如你有一批数据表要改,可以用下面的指令:
 mysql_convert_table_format [opt] -- ENGINE=InnoDB dbname [tablename]
但千万注意不要改变 mysql 数据库的数据型态,因为 mysql数据库存放的是 MySQL 内部的管理信息,所以必须保持 MyISAM 的格式。

* 加大 tablespace 空间:
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend:max2G

 上面的意思是,tablespace 包含 ibdata1 & ibdata2 两个文件,若文件不存在,则建立容量各为1G的文件。一旦未来 InnoDB 需要,更多的空间,则 ibdata2 将每次自动增加 8MB,直到2G为止。

 * MySQL 3.23.n,innodb_data_home & innodb_data_file_path设定是必须要有的,MySQL 4.0.0 之后的版本则是非必须的。

mysql myisam转innodb的2种方法

mysql myisam转innodb的2种方法

一,用alter table来实现。
mysql> alter table merchant type=innodb;

ALTER TABLE  `block_view` ENGINE = INNODB;

 

二,导出数据,重新建表
1,导出表结构以及数据,删除老表,重新建表
查看复制打印?
//方法1,我们可以把把创建这个表的sql拷贝出来,把ENGINE=MyISAM换成,ENGINE=INNODB 
mysql> show create table merchant\G; 
*************************** 1. row *************************** 
 Table: merchant 
Create Table: CREATE TABLE `merchant` ( 
 `btid` int(5) unsigned zerofill NOT NULL auto_increment, 
 `btname` varchar(100) NOT NULL, 
 `btnote` text, 
 PRIMARY KEY  (`btid`), 
 UNIQUE KEY `btname` (`btname`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 
1 row in set (0.00 sec) 
 
//方法2,直接导出表结构,在文件里面替换一个myisam 
mysqldump -udba -p -d test merchant >/tmp/test/mytest/merchant.sql; 
2,导出数据
mysqldump -udba -p --no-create-info test merchant >/tmp/test/mytest/merchant_data.sql; 
3,删除老表,重新建表,导入数据,这个就不说了,linux 简单的mysql备份和导入,以及文件的备份和导入

mysql innodb启动问题

# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /www/wdlinux/mysql-5.5.30/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /www/wdlinux/mysql-5.5.30/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 64M  //启用这个,就不能启动
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

 

--------

要把ib_log*的文件删除,再启动就正常了

使用gperftools优化Nginx和MySQL内存管理

Google 开发的 gperftools 包含四个工具,分别是:TCMalloc、heap-checker、heap-profiler 和 cpu-profiler,TCMalloc是 gperftools 的其中一个工具,用于优化C++写的多线程应用,与标准的glibc库的malloc相比,TCMalloc在内存的分配效率和速度要高,可以在高并发的情况下很好的控制内存的使用,提高服务器的性能,降低负载。

使用 TCMalloc 优化 Nginx 和 MySQL 的内存管理,性能将会有一定程度的提升,特别是对MYSQL服务器高并发下情况下的性能。

安装 libunwind 库
如果系统是64位的需要先安装libunwind库,32位系统则不需要安装。

libunwind 库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。

wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.0.1.tar.gz
tar -zxvf libunwind-1.0.1.tar.gz
cd libunwind-1.0.1/
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
cd ../

gperftools 的安装
gperftools 项目网站 http://code.google.com/p/gperftools/

wget http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz
tar -zxvf gperftools-2.0.tar.gz
cd gperftools-2.0
./configure --prefix=/usr/local --enable-frame-pointers
make
make install
cd ../

如果是32位系统,可以不添加 –enable-frame-pointers,如果是64位系统,并且之前没有安装libunwind,那么一定要添加 –enable-frame-pointers 参数。

echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig

为 gperftools 添加线程目录:

mkdir /tmp/tcmalloc
chmod 0777 /tmp/tcmalloc

使用gperftools优化Nginx:

为了使 Nginx 支持 gperftools,增加参数 –with-google_perftools_module 重新编译Nginx。

修改/usr/local/nginx/conf/nginx.conf
在pid这行的下面添加
google_perftools_profiles /tmp/tcmalloc;

重新启动nginx

使用gperftools优化MYSQL:
查找文件 /usr/local/mysql/bin/mysqld_safe

在# executing mysqld_safe 下面加上
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

重新启动MYSQL

验证 tcmalloc 是否运行:
lsof -n | grep tcmalloc

http-2.4

[Thu Aug 15 17:32:57.808228 2013] [authz_core:error] [pid 1418:tid 140248106297088] [client 183.31.217.145:15391] AH01630: client denied by server configuration: /www/web/default/index.html

 

<Directory />
    AllowOverride none
    Require all denied
</Directory>
<Directory /www/web>
    AllowOverride none
    Require all granted
    #Require all denied
</Directory>

 

<Directory /www/web/default>
    Options FollowSymLinks
    AllowOverride None
    #Order allow,deny
    #Allow from all
    Require all granted
</Directory>