kukaka.org
域名年龄: 16年3个月2天HTTP/1.1 301 永久重定向 服务器:nginx 访问时间:2014年11月30日 08:52:47 类型:text/html 文件大小:178 连接:keep-alive 目标网址:http://www.kukaka.org/ HTTP/1.1 301 永久重定向 服务器:nginx 访问时间:2014年11月30日 08:52:47 类型:text/html 文件大小:178 连接:keep-alive 目标网址:http://www.epooll.com/ HTTP/1.1 200 OK 服务器:nginx 访问时间:2014年11月30日 08:52:47 类型:text/html; charset=UTF-8 Transfer-Encoding: chunked 连接:keep-alive 动作:Accept-Encoding 语言环境:PHP/5.5.15 X-Pingback: http://www.epooll.com/action/xmlrpc Content-Encoding: gzip 网站编码:UTF-8
该域名无法解析为IP
TrapechoHOMEWeb Cache Mysql Linux PHP Golangphp-fpm的max_chindren的一些误区admin@ 2014.11.23 , 11:47 pm, Web Linux PHP, COMMENTS现在nginx + fpm 基本成为主流的配置,其中我们比较关注的是pm.max_chindren的配置首先,我们关注一个前提设置: pm = static/dynamic,这个选项是标识fpm子进程的产生模式:static :表示在fpm运行时直接fork出pm.max_chindren个worker进程,dynamic:表示,运行时fork出start_servers个进程,随着负载的情况,动态的调整,最多不超过max_children个进程。一般推荐用static,优点是不用动态的判断负载情况,提升性能,缺点是多占用些系统内存资源。上面的告诉我们max_chindren代表的worker的进程数。普遍认为,这个配置越多能同时处理的并发也就越多,这是一个比较大的误区:1) 查看了fpm的相关源码, 管理进程和worker进程是通过pipe进行数据通讯的。所以进程多了,增加进程管理的开销,系统进程切换的开销,更核心的是,能并发执行的fpm进程不会超过cpu个数。通过多开worker的个数来提升qps, 是错误的理解,不会说你多开了几个进程,就多出几个cpu来处理。2) 但worker进程开少了,如果server比较繁忙的话,会导到nginx把数据打到fpm的时候,发现所有的woker都在工作中,没有空闲的worker来接受请求,从而导致502。那worker数到底该怎么配置呢?理论上woker进程数=cpu的个数是最合理的,但由于第2点的原因,可能每个worker都没处理完请求,这样,就会频现502了。但多开请求,只是说避免502,暂时把请求hang住,但这只是缓解之道,实际上这不但不会增加系统的并发,而且会加重系统的负荷,所以,设置一个合理的worker数就比较重要了。天下武功,唯快不破,只有尽可能的提升程序的效率,把单个请求的时间压缩到最低,这样,单个worker的处理时间变短了,那在单位时间里能处理的请求自然就多了。那么可以通过每个worker在单位时间内处理的请求数来预估max_children的个数。假如最大的一个请求的处理时间是100ms内,而在100ms之内同时有100个请求过来,那了理论上就需要配置100个worker进程,先把请求给hang住。但最大的请求耗时可能会受很多外在的情况影响,不太好预估,其实这里有一个捷径,来配置你的max_children数, 就是你前期先把max_childnren设置成一个比较大的值,稳定运行一段时间后,观察fpm的status里的 max active processes 是多少,然后把max_children配置比他大一些就ok了。希望这些文章能给大家有一些帮助。转自王晶:http://www.guangla.com/post/2014-03-14/40061238121Golang map常用操作、协程Goroutine下配合Mutex锁更新mapadmin@ 2014.11.23 , 11:40 pm, Golang, COMMENTSmap 是golang必备利器之一,通俗点说,就是一组组key=>value的集合,有点类似于java中的hashmap.声明及创建:var myMap = make(map[string] string, 100) //创建一个初始存储能力为100的map, key的类型是string 值的类型也是string赋值:myMap["key"] = "value"删除:delete(myMap, "key") (如果myMap == nil, 则会抛出异常)查找:value, ok := myMap["key"]if ok { //找到了}全局的map在多个协程Goroutine写的时候会冲突:var (myMap map[string]string Mutex sync.Mutex)func main() {for i := 0; i < 1000; i++ {go func() {Mutex.Lock()// 注意如果协程是堵塞的,例如下面是for死循环,那么这个协程就永远不会退出,defer语法就永远不会被执行// defer Mutex.Unlock()myMap["key"] = "value"// 还是下面的写法比较好,反正map写完就解锁了Mutex.Unlock()} }}Mysql 查看连接数,状态admin@ 2014.11.23 , 11:25 pm, Mysql Linux, COMMENTS命令: show processlist;如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。show processlist;只列出前100条,如果想全列出请使用show full processlist;mysql> show processlist;命令: show status;命令:show status like '%下面变量%';Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。Connections 试图连接MySQL服务器的次数。Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。Delayed_writes 用INSERT DELAYED写入的行数。Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。Flush_commands 执行FLUSH命令的次数。Handler_delete 请求从一张表中删除行的次数。Handler_read_first 请求读入表中第一行的次数。Handler_read_key 请求数字基于键读行。Handler_read_next 请求读入基于一个键的一行的次数。Handler_read_rnd 请求读入基于一个固定位置的一行的次数。Handler_update 请求更新表中一行的次数。Handler_write 请求向表中插入一行的次数。Key_blocks_used 用于关键字缓存的块的数量。Key_read_requests 请求从缓存读入一个键值的次数。Key_reads 从磁盘物理读入一个键值的次数。Key_write_requests 请求将一个关键字块写入缓存次数。Key_writes 将一个键值块物理写入磁盘的次数。Max_used_connections 同时使用的连接的最大数目。Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。Not_flushed_delayed_rows 在INSERT DE
© 2010 - 2020 网站综合信息查询 同IP网站查询 相关类似网站查询 网站备案查询网站地图 最新查询 最近更新 优秀网站 热门网站 全部网站 同IP查询 备案查询
2025-11-30 12:52, Process in 0.0095 second.