10. 10.

升级了php5.2到5.3之后,或者是php有重新编译过之后,可能遇到这样的情况:

[root@See341-98 ~]# /usr/local/php/bin/php -m|grep mysql
/usr/local/php/bin/php: /usr/lib64/libxml2.so.2: no version information available (required by /usr/local/php/bin/php)
/usr/local/php/bin/php: /usr/lib64/libxml2.so.2: no version information available (required by /usr/local/php/bin/php)
/usr/local/php/bin/php: /usr/lib64/libxml2.so.2: no version information available (required by /usr/local/php/bin/php)
/usr/local/php/bin/php: /usr/lib64/libxml2.so.2: no version information available (required by /usr/local/php/bin/php)
/usr/local/php/bin/php: /usr/lib64/libxml2.so.2: no version information available (required by /usr/local/php/bin/php)
阅读全文 »


06. 16.

本文参考:http://www.admon.org/faqs/why-network-port-is-open-but-no-process-attached/

一次偶然事件,我检查某台服务器系统时发现一个从来没见过的端口处于监听(LISTEN)状态,于是开始仔细检查系统。

[root@db097 ~]# netstat -lnpt | grep 7979
tcp 0 0 0.0.0.0:7979 0.0.0.0:* LISTEN –

进程里什么都没有,试了多种办法试着去找一下,都是一样的结果。

[root@db097 ~]# lsof -i:7979

google了半天,最后一段话提示了我:

I realized it’s an port opened by kernel, that’s why it won’t show up with program name. For the port like this, it may relate to NFS and OCFS stuff, or something like that, or it could be a kernel bug. If you need to find more details, check kernel logs for OOPS and bug.

 
阅读全文 »


02. 4.

今天帮一个朋友update系统时,发现其中一台server居然提示:

Transaction Check Error:
file /usr/lib/perl5/5.8.8/CGI.pm from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/lib/perl5/5.8.8/Digest.pm from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/c2ph.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/cpan.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/dprofpp.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/perlvms.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386
file /usr/share/man/man1/perlvos.1.gz from install of perl-5.8.8-32.el5_7.6.x86_64 conflicts with file from package perl-5.8.8-32.el5_6.3.i386

中间省略100行,都是关于perl的
阅读全文 »


07. 23.

其实就是因为一次本机启动apache的时候,无论如何也启动不了,实际上是我忘记了N久之前开启过一次IIS,shit!因为我从来没把问题往这里考虑,思维固化的恶果啊……

找到到使用80端口进程的PID

C:\> netstat -ano|findstr “80”
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2328

然后找进程名了

C:\> tasklist|findstr “2328”
httpd.exe 2328 Console 0 23,956 K

那么可以确定httpd.exe在使用80端口了,可以放心结束进程或者关闭相关程序或者服务什么的了~~

其他端口一样的方式去查找。


04. 4.

之前由于精简系统的服务而没有开启irqbalance服务,但是irqbalance现在被证实为非常有必要的服务,他的主要功能是可以合理的调配使用各个CPU核心,特别是对于目前主流多核心的CPU,简单的说就是能够把压力均匀的分配到各个CPU核心上,对提升性能有很大的帮助,我引用一段话:

启用 irqbalance 服务,既可以提升性能,又可以降低能耗。irqbalance 用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于 Performance mode 或 Power-save mode。处于 Performance mode 时,irqbalance 会将中断尽可能均匀地分发给各个 CPU core,以充分利用 CPU 多核,提升性能。处于 Power-save mode 时,irqbalance 会将中断集中分配给第一个 CPU,以保证其它空闲 CPU 的睡眠时间,降低能耗。(详见:http://www.irqbalance.org/documentation.php)

开启irqbalance服务,具体操作如下:
shell> chkconfig –level 2345 irqbalance on
shell> service irqbalance start

如果没有此服务,请先安装依赖软件包,操作如下:
shell> yum -y install irqbalance
shell> service irqbalance start

可以使用shell>mpstat -P ALL 1 10来观察前后的实际的CPU使用运行情况。


01. 1.

一直莫名其妙的遇到类似这样错误: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
阅读全文 »


12. 1.

一、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 没有规定特定的算法用于低层控制,但它确实定义了一些通信参数来支持这样的算法工作。
阅读全文 »


11. 8.

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


10. 2.

某台前端服务器发现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

阅读全文 »


09. 24.

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其他需要分配的内存有多少。

阅读全文 »