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

SQL注入

./sqlmap.py -r 3.txt --dbms=mysql --dbs -v 0 --level 5
./sqlmap.py -r 3.txt --dbms=mysql --tables -v 0 --level 5

 

3.txt为header,firefox header,修改 header

Linux批量添加IP,Centos如何快速绑定多个IP

我们购买了5个IP,13个IP,难道都要一个一个的来写配置文件吗?Linux这么批量添加IP?Centos如何快速绑定多个IP?可否做到一个配置文件即可?可以! 
可以在/etc/sysconfig/network-scripts下创建一个range文件

比如,vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR_START=10.0.0.111
IPADDR_END=10.0.0.119
CLONENUM_START=0
GATEWAY=10.0.0.1
NETMASK=255.255.255.000
NO_ALIASROUTING=yes

其中:

 

IPADDR_START 是起始IP地址,
IPADDR_END 是结束IP地址,
CLONENUM_START 是起始IP别名网卡名(本例中是 eth0:0)

然后重启网络让IP生效: service network restart

 

NETMASK 子网掩码 参考表:

 

/29 (5 usable) NETMASK = 255.255.255.248
/28 (13 usable) NETMASK = 255.255.255.240
/27 (29 usable) NETMASK = 255.255.255.224
/26 (61 usable) NETMASK = 255.255.255.192
/25 (125 usable) NETMASK = 255.255.255.128
/24 (253 usable) NETMASK = 255.255.255.0


-------------------------------------------
最简单的配置如下:

IPADDR_START=开始IP地址
IPADDR_END=结束IP地址
CLONENUM_START=0

转基因

能不吃转基因,就绝对不吃

转基因大豆,用水泡两天,会发芽的为非转基因大豆,不会发芽的为转基因大豆

squid-3.2 多核

wget http://www.squid-cache.org/Versions/v3/3.2/squid-3.2.0.18.tar.gz
./configure --prefix=/usr/local/squid --enable-gnuregex --enable-async-io=80 --enable-cache-digests --enable-err-language="zh-cn" --enable-default-err-language="zh-cn" --enable-epoll --disable-internal-dns  --with-filedescriptors=655360 --enable-kill-parent-hack --enable-esi --enable-ssl --with-large-files --enable-build-info='VeryCDN'  --enable-follow-x-forwarded-for
make
make install

 

 

squid.conf
机器为6核.所以 workers 为6
也可以为每个squid 进程.绑定到某个CPU核上
设置方法见cpu_affinity_map参数

http://www.squid-cache.org/Doc/config/cpu_affinity_map/

 

 

acl ControlCentre src 114.80.226.0/24 112.65.227.0/24 127.0.0.0/24
http_port 80 accel vhost vport
max_filedescriptors 65535
 

cpu_affinity_map代替workers,能正常开启多进程,squid工作正常。我们的服务器是双CPU,12核24进程,下面是我们的参数:

1 cpu_affinity_map process_numbers=1,2,3,4,5,6,7,8,9,10,11,12
2 cores=1,3,5,7,9,11,13,15,17,19,21,23
这个参数的意思就是把squid进程和CPU核绑定。

了解squid3.2支持多核设计考虑

1. 当前squid的状态和架构
Squid-3.3使用wokers 支持基本的多核,管理员可以通过配置启动一个squid来派生多个worker进程利用所有可利用的CPU。

一个worker 接收一个新的http request 并且处理每一个请求直到它完成。Worker之间可以共享http_ports 但是它们不会将一个请求事务传到其他worker间。一个worker支持的功能与单squid(不支持SMP的squid)完全相同可但是worker之间或许配置不同,如配置为监听不同的http_ports。参数cpu_affinity_map项允许CPU core绑定到每个worker。

2. Worker之间是如何协调的?
一个指定的协调进程会启动workers 和在它们需要时,协调他们的行为。以下是协调程序的主要职责:
重启工作异常的worker进程。
允许worker进程直接共享监听socket
广播reload和shutdow命令到其他worker
为Cahce Manager统计一些信息。
协调程序并不参与常规的事务处理,也决定不了哪worker来处理新进来的请求。
通常,这个协调程序都是空闲的。

3. Worker进程之间可以共享啥?
可以使用协调器和通用的配置文件,squid的worker进程们可以收到完全相同的配置信息和同步它们之间的特性。默认情况下,squid worker 可以共享的如下:
Squid可执行程序。
通用配置文件
监听的端口
Logs
内存缓存对象(支持大多数的环境)
磁盘缓存对象(仅限于Rock Store)
缓存管理统计等。

限定的配置和worker依赖的宏可以用来限制共享。例如,每个worker可以指定监听某一个http_port。

目前,squid 的worker和同步狭义的资源或服务,包括如下:
1)、内存缓存对象(在一些特定的环境下)
2)、磁盘缓存对象(除了Rock Store)
3)、DNS caches (ipcache 和 fqdncache)
4)、SNMP 统计—目前正有一个活跃的项目在推竞这项工作。
5)、Helper 进程和 守护进程。
6)、SSL session 缓存

缓存索引可以共享而无需另行拷贝。其他的信息共享通常是在RAM中进行,本质上是用拷贝和复制来进行,以避免加锁及其他的性能开销。

4. 为什么用进程?难道线程不是更好么?
以下几个原因决定了使用进程而不是线程:
1)、在当前squid的框架下使用线程会消耗更多的时间,缘于线程不安全。用户现在急需支持多核也无法等待彻底从新开始重现一个squd。
2)、线程提供了更快的上下文切换,但在一个典型的多核的squid部署环境中,squid的每个worker进程都绑定到了一个特定的cpu,上下文切换的开销并不是非常重要。
3)、进程和线程同步和共享机制对足以支持多处理器功能的扩展。
概括起来,我们使用进程代替线程的原因是:它让我们在有限的时间内实现了对多处理器的支持。此时使用线程不太现实。

5. 由谁决定worker 接受request?
所有的worker都共享http_port 监听同一个IP地址和同一个tcp port。操作系统会加锁保护这个监听的socket。并且决定哪个worker接受这个HTTP请求。一旦连接被这个worker接受,则这个连接就交给对应的这个worker

原文地址:http://wiki.squid-cache.org/Features/SmpScale

squid 关于内存相关参数的说明

cache_mem  10240 MB  squid使用的其它内存上限,用于传输中的对象/热对象/非缓存对象(有点像linux的硬盘缓存,他们都存成4kb的块,这样可以提高传输速度),默认8MB,传输中的对象优先级最高。
注意:这个值要参考硬盘缓存所使用的内存和总内存量确定,设定大,则缓存的热内容多,但硬盘缓存的内容就少了。(估算一下最热内容占多大空间再决定)
maximum_object_size_in_memory  16  KB  对象的最大尺寸,超过不会被放入内存,默认8KB,根据网站网页一般的尺寸设置大小,最好是4kb的倍数
memory_replacement_policy  lru  内存替换策略,默认LRU,不用改
memory_pools  on  squid预先分配一定的内存用于cache,以提高效率,默认on;如果os内存管理很高效,可以off
memory_pools_limit  5  MB  squid在memory_pools中保存的预分配(未使用的)内存的上限,当pools开启时有效,0表示不限制大小,最好设一个的值,大些,以保证内存效率,实际不一定会用到这个值,默认5MB。这个值可以设置为64-128MB,squid会根据需求占用之。

如果在服务器只单纯用于squid服务时,可以关闭memory_pools 选项,让squid自动决定分配多少内存:
memory_pools off
memory_pools_limit none
如果不是专门的服务器,就要打开memory_pools 选项,适当的设置
memory_pools on
memory_pools_limit 1024M

mysql 开启慢查询日志

优化MySQL最重要的一部分工作是先确定”有问题”的查询语句。只有先找出这些查询较慢的sql查询(执行时间较长),我们才能进一步分析原因并且优化它。MySQL为我们提供了Slow Query Log记录功能,它能记录执行时间超过了特定时长的查询。分析Slow Query Log有助于帮我们找到”问题”查询。记录slow queries

首先,我们需要查看mysql server版本号,以及是否配置启用了slow query log。

#打开服务
log_slow_queries = ON

当log_slow_queries是ON时,才表示已经启用了记录slow query功能。默认是不记录slow query的。
启用slow query日志
#//将下列配置放到my.cnf中
[mysqld]
log-slow-queries = /var/lib/mysql/slow-queries.log

//新增加的参数
long_query_time = 3
log-queries-not-using-indexes
log-slow-admin-statements

 

上面的配置打开了slow query日志,将会捕获了执行时间超过了3秒的查询,包括执行速度较慢的管理命令(比如OPTIMEZE TABLE),并且记录了没有使用索引的查询。这些SQL,都会被记录到log-slow-queries指定的文件/var/lib/mysql/slow-queries.log文件中。
log-slow-queries <slow_query_log_file>
存放slow query日志的文件。你必须保证mysql server进程mysqld_safe进程用户对该文件有w权限。
long_query_time
如果query time超过了该值,则认为是较慢查询,并被记录下来。单位是秒,最小值是1,默认值是10秒。10秒对于大多数应用来讲,太长了。我们推荐从3秒开始, 依次减少,每次都找出最”昂贵”的10条SQL语句并且优化他们。日复一日,一步一步优化。一次性找出很多条SQL语句,对于优化来讲,意义并不大。
log-queries-not-using-indexes
MySQL会将没有使用索引的查询记录到slow query日志中。无论它执行有多快,查询语句没有使用索引,都会被记录。有的时候,有些没有使用引索的查询非常快(例如扫描很小的表),但也有可能导致服务器变慢,甚至还会使用大量的磁盘空间。
log-slow-admin-statements
一些管理指令,也会被记录。比如OPTIMEZE TABLE, ALTER TABLE等等。
日志文件

我们可以通过tail -f查看日志文件。
$tail -f /var/lib/mysql/slow-queries.log
# Time: 110107 16:22:11
# User@Host: root[root] @ localhost []
# Query_time: 9.869362 Lock_time: 0.000035 Rows_sent: 1 Rows_examined: 6261774
SET timestamp=1294388531;
select count(*) from ep_friends;

第一行,SQL查询执行的时间
第二行,执行SQL查询的连接信息
第三行记录了一些我们比较有用的信息
Query_time SQL执行的时间,越长则越慢
Lock_time 在MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间
Rows_sent 查询返回的行数
Rows_examined 查询检查的行数
Slow Query日志,虽然帮助你记录了那些执行过了的SQL语句。但它不是万能的,意义可能没有你想象的那么大。它只告诉了你哪些语句慢,但是为什么慢?具体 原因,还是需要你自己去分析,不断的调试。也许,你只需要换一条更有效的sql语句,也许你只需简单地增加一个索引,但也有可能你需要调整你应用程序的设 计方案。比如,上面那条语句是很明显,它检查了600多万行数据。不幸的是,并不是每条语句都这么明显。也许还有别的原因,比如:
*锁表了,导致查询处于等态状态。lock_time显示了查询等待锁被翻译的时间
*数据或索引没有被缓存。常见于第一次启动服务器或者服务器没有调优
*备份数据库,I/O变慢
*也许同时运行了其它的查询,减少了当前查询

所以,不要过于紧张日志文件某条记录,而应该理性地审记,找出真正的原因。如果经常出现的slow query需要特别注意。如果个别出现,则做一些常规检查即可。我们建议,统计并且形成基准报告,进行比较排除,比胡乱瞎撞有用。希望大家不要在这部分过于浪费时间与精力。
线上记录slow query

上文的配置需要重启mysql server进程mysqld才会生效。但是很多时候,尤其是产品运营环境,不希望每次修改都需要重新启动mysql服务器,也希望能在某些特定时间记 录。MySQL5.1给我们提供了更为灵活的运行时控制,使得你不必重新启动mysql服务器,也能选择性地记录或者不记录某些slow queries。

MySQL5.1中,提供了全局变量slow_query_log、slow_query_log_file可以灵活地控制enable/disable慢查询。同时可以通过long_query_time设置时间
#//停用slow query记录
#注意:设置了slow_query_log全局变量, log_slow_queries也会隐性地跟着改变
mysql>set global slow_query_log=OFF

不幸运的是,在MySQL5.0并没有提供类似的全局变量来灵活控制,但是我们可以通过将long_query_time设置得足够大来避免记录某些查询语句。比如
mysql>set global long_query_time = 3600;

MySQL5.0, 不关服务的情况下,希望不记录日志的办法是将日志文件成为/dev/null的符号链接(symbolic link)。注意:你只需要在改变后运行FLUSH LOGS以确定MYSQL释放当前的日志文件描述符,重新把日志记录到/dev/null

和MySQL5.0不同,MySQL5.1可以在运行时改变日记行为,将日志记录到数据库表中。只要将mysql全局变量log_output设置为 TABLE即可。MySQL会将日志分别记录到表mysql.gengera_log和mysql.slow_log二张表中。但是,我们推荐将日志记录 在日记文件中。
mysql> show variables like ‘log_output’\G
Variable_name: log_output
Value: FILE
mysql>set global log_output=’table’;
缺陷与审记

虽然记录了slow query能够帮助你优化产品。但是MySQL目前版本,还有几大蹩足的地方。
1.MySQL5.0版本, long_query_time时间粒度不够细,最小值为1秒。对于高并发性能的网页脚本而言,1秒出现的意义不大。即出现1秒的查询比较少。直到mysql5.1.21才提供更细粒度的long_query_time设定.
2.不能将服务器执行的所有查询记录到慢速日志中。虽然MySQL普通日志记录了所有查询,但是它们是解析查询之前就记录下来了。这意味着普通日志没办法包含诸如执行时间,锁表时间,检查行数等信息。
3.如果开启了log_queries_not_using_indexes选项,slow query日志会充满过多的垃圾日志记录,这些快且高效的全表扫描查询(表小)会冲掉真正有用的slow queries记录。比如select * from category这样的查询也会被记录下来。

通过microslow-patch补丁可使用更细的时间粒度,和记录所有执行过的sql语句。不过,使用这个补订不得不自己编译MySQL,出于稳定性考滤,我们推荐在开发测试环境,可以打上这个补丁,享受这个补丁带来的便利。在运营环境尽量不要这么做…

MySQL自带了mysqldumpslow工具用来分析slow query日志,除此之外,还有一些好用的开源工具。比如MyProfi、mysql-log-filter,当然还有mysqlsla

rndc: ‘reload’ failed: not found解决

在执行rndc reload abc.com的时候,系统返回错误:
rndc: ‘reload’ failed: not found

发生这个错误的原因在使用单独域名reload时,rndc命令不能对新添加的域名生效,只能对已经存在的域名有效果。

也就是说当在bind里面配置对新的域名解析时,需要通过rndc reload方式去读取全部conf文件。

在这之后就可以使用rndc reload abc.com进行单独域名的更新了。

同时提示,如果使用了view方式话,需要在rndc的时候指定下
rndc reload abc.com in view_name