1. 01.

一直莫名其妙的遇到类似这样错误:connect() to unix:/tmp/php-fcgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream,N久之后才发现了Igor Sysoev的留言。

原文链接:http://marc.info/?l=nginx&m=125423942216521&w=2

> I found that :
>
> #define NGX_LISTEN_BACKLOG 511
>
> and use it as the backlog of listen()
>
> ls.backlog = NGX_LISTEN_BACKLOG;
> if (listen(s, ls.backlog) == -1) {
>
> Does it mean that only 511 connection could be accept at the same time ?

No, it means that up to 511 connections can be queued in kernel listen
queue. 511 is just a safe limit for the most OSes. For FreeBSD it's -1,
i.e., value of sysctl kern.ipc.somaxconn.

> May I modify it to 1024 or higher( I am sure use it less than SOMAXCONN )

listen 80 default backlog=1024;

--
Igor Sysoev
阅读全文 »


1. 12.

一、PPTP 协议介绍
1、PPTP 简介
PPTP: Point to Point Tunneling Protocol
点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术。通过该协议,远程用户能够通过 Microsoft Windows NT 工作站、Windows 95 和 Windows 98 操作系统以及其它装有点对点协议的系统安全访问公司网络,并能拨号连入本地 ISP,通过 Internet 安全链接到公司网络。
PPTP 可以用于在 IP 网络上建立 PPP 会话隧道。在这种配置下,PPTP 隧道和 PPP 会话运行在两个相同的机器上,呼叫方充当 PNS。PPTP 使用客户机-服务器结构来分离当前网络访问服务器具备的一些功能并支持虚拟专用网络。PPTP 作为一个呼叫控制和管理协议,它允许服务器控制来自 PSTN 或 ISDN 的拨入电路交换呼叫访问并初始化外部电路交换连接。
PPTP 只能通过 PAC 和 PNS 来实施,其它系统没有必要知道 PPTP。拨号网络可与 PAC 相连接而无需知道 PPTP。标准的 PPP 客户机软件可继续在隧道 PPP 链接上操作。
PPTP 使用 GRE 的扩展版本来传输用户 PPP 包。这些增强允许为在 PAC 和 PNS 之间传输用户数据的隧道提供低层拥塞控制和流控制。这种机制允许高效使用隧道可用带宽并且避免了不必要的重发和缓冲区溢出。PPTP 没有规定特定的算法用于低层控制,但它确实定义了一些通信参数来支持这样的算法工作。
阅读全文 »


8. 11.

There is no Zend Optimizer for PHP 5.3 currently, so php codes encrypted with Zend Guard do not work.

Zend has promised a new version of Zend Optimiser and Zend Guard for PHP 5.3 later this year. But there is a catch, because of compatibility problems apps encrypted with older Zend Guard versions will probably not work with PHP 5.3 .

source: http://forums.zend.com/viewtopic.php?f=57&t=1365


2. 10.

某台前端服务器发现iconv函数数据输出为空。其他前端则输出正常;系统版本和安装的软件包都是一样;经过分析基本判断为gd库和iconv的冲突问题只要php编译中加入gd库支持就会导致这一情况。

但是在前端服务器里面缺完全没有这个问题,看来只是针对特定硬件出现的问题。解决方法是把gd或者iconv作为作为动态模块加载,总之避免gd和iconv同时使用静态方式编译就行。

php动态方式加载gd编译方法

首先安装好gd
假设gd是安装在/usr/local/gd,php是安装在/usr/local/php

cd /usr/local/src/php-5.2.8/ext/gd/
/usr/local/php/bin/phpize
./configure --with-gd=/usr/local/gd --with-php-config=/usr/local/php/bin/php-config
make && make install

阅读全文 »


24. 09.

key_buffer_size - 这对MyISAM表来说非常重要。如果只是使用MyISAM表,可以把它设置为可用内存的 30-40%。合理的值取决于索引大小、数据量以及负载。
记住,MyISAM表会使用操作系统的缓存来缓存数据,因此需要留出部分内存给它们,很多情况下数据比索引大多了。尽管如此,需要总是检查是否所有的 key_buffer 都被利用了。
.MYI 文件只有 1GB,而 key_buffer 却设置为 4GB 的情况是非常少的。这么做太浪费了。如果你很少使用MyISAM表,那么也保留低于 16-32MB 的 key_buffer_size 以适应给予磁盘的临时表索引所需。

innodb_buffer_pool_size - 这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了。

innodb_additional_pool_size - 这个选项对性能影响并不太多,至少在有差不多足够内存可分配的操作系统上是这样。不过如果你仍然想设置为 20MB(或者更大),因此就需要看一下Innodb其他需要分配的内存有多少。

阅读全文 »


17. 06.

环境:centos x86_64
说明:使用daemon的方式来跑svn,不使用apache
首先到:http://subversion.tigris.org/ 下载最新的subversion源码

我下的是:http://subversion.tigris.org/downloads/subversion-1.6.2.tar.bz2

解压:tar jxvf subversion-1.6.2.tar.bz2
cd subversion-1.6.2
svn co http://svn.apache.org/repos/asf/apr/apr/branches/1.2.x apr
svn co http://svn.apache.org/repos/asf/apr/apr-util/branches/1.2.x apr-util

下载:wget -c http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
解压缩sqlite-amalgamation-3.6.13.tar.gz
并且把其中的sqlite3.c拷贝到(不存在的路径自己建立):
cp sqlite-3.6.13/sqlite3.c ./subversion-1.6.2/sqlite-amalgamation/

阅读全文 »


24. 04.

最近发现两台MySQL server在中午的时候忽然(很突然的那种)发飙,不断的挂掉。重启mysql也尽是失败,看mysql的errorlog,只能看到类似如下的信息:

Forcing close of thread 12232 user: 'root'

用mysqladmin 简单的监控了下mysql的情况:

mysqladmin -uroot -p******** status -i 1

发现Queries per second avg只有200左右,可以说很低,但是Threads 确非常不稳定,居然会瞬间升级200以上,一般情况下这个线程这个值都是不会高于5的个位数!

然后继续看

mysqladmin -uroot -p******** processlist

居然有大量的unauthenticated user?? 如下情况

阅读全文 »


20. 04.

本文系转载精文,原文地址:http://www.sudone.com/nginx/nginx_vs_lvs.html

lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。

首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。

下面来分析一下两者:

一、lvs的优势:

1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗。

2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
阅读全文 »


31. 03.

本文定义为参考文档,深色为推荐打开的服务

NetworkManager
自动在多种网络连接中进行转换,如果你的电脑有Wireless WiFi 和 Ethernet多种网络连接类型的话,可以选择开启。

NetworkManagerDispatcher

acpid
acpid(Advanced Configuration and Power Interface)是为替代传统的APM电源管理标准而推出的新型电源管理标准。通常笔记本电脑需要启动电源进行管理。

anacron
自动化运行任务守护进程。Red Hat Linux 随带四个自动化任务的工具:cron、anacron、at和 batc。当你的Linux服务器并不是全天运行,这个anacron就可以帮你执行在”crontab”设定的时间内没有执行的工作。

apmd
高级电源管理

atd
自动化运行任务守护进程。

阅读全文 »


24. 03.

本文系转载,值得参考一读:
原文地址:http://blog.nowans.com/content/log.2008.10.29.229.html
作者: bugx

昨天装上nginx后在高负载的时候,论坛上传图片或者执行较长时间脚本的时候就不停的出现502 Bad Gateway ,网上搜了,大多数都是张大师的那篇解决方案,他的解决方案是

http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}

阅读全文 »