Feb7

dbmail相关问题汇总

Author: leeon  Click: 9708   Comments: 0 Category: linux  Tag: dbmail

1.安装完dbmail后启动报错:
Feb 07 18:41:48 leo dbmail-util[4556]: Error:[sql] dbmysql.c,db_mysql_check_collations(+138): collation mismatch, your MySQL configuration specifies a different charset than the data currently in your DBMail database.
解决方法:
安装最新版的MySQL rpm后初始化新建的数据库表的编码不是UTF8,因此导致配置文件中的数据库编码utf8与MySQL编码不正确所致,修改dbmail数据库的编码即可。
ALTER DATABASE dbmail DEFAULT CHARACTER SET utf8;


安装dbmail-2.2.X的版本时候,切忌安装的gmime版本应该是2.2.X的版本,千万不要安装2.4.X及以上的版本,否则dbmail在编译的时候报错。
据观察gmime-2.2.x的版本生成的pc文件代号是gmime-2.0.pc而2.4.x+的版本生成的则是gmime-2.X.pc,然而dbmial安装的时候检查的pc版本号仅仅是2.0,因此dbmail-2.2.x的版本最好只用gmime-2.2.x的版本为宜。

安装gmime-2.5.1时提示报错缺少gpgme.h文件

于是又去
http://www.gnupg.org/download/index.en.html#gpgme
下载
gpgme库和Libgpg-error库


dbmail-2.2.14版本貌似很有问题,配置lmtp的时候死活都不把邮件提交给mysql存储,观察log发现状态全部都是
 status=deferred (lost connection with 127.0.0.1[127.0.0.1] while sending end of  data -- message may be sent more than once)
于是换成dbmail-2.2.13版本运行就正常了。建议安装dbmail不要使用最新版本进行最新版本


Feb6

centos,rhel中glib2的升级问题

Author: leeon  Click: 14694   Comments: 0 Category: linux  Tag: glib,glib2,redhat,centos
CentOS(5.1,5.2,5.3,5.4),RedHat Enterprise Linux(5.1,5.2,5.3,5.4)中自带的glib有glib和glib2,在安装gmime,dbmail的时候都需要用到glib2  ,版本要大于等于2.8.0 the Glib library (>= version 2.8.0)
rhel和centos中glib自带有有glib 和glib2 ,但通常安装其他软件需要用到的是glib2的库,因此我们通常需要升级glib2的版本来满足其他软件所需

首先强制卸载系统内置的glib2,原先系统自带的版本通常都很小。
命令如下:
[code="bash"]
rpm -e --nodeps glib2
[/code]
然后在gtk.org上下载最新版的glib
地址:
http://ftp.gnome.org/pub/gnome/sources/glib/

然后解压重新编译,注意这时候要添加安装地址,要不然安装其他程序的时候会提示找不到glib
命令如下:
[code="bash"]
./configure --prefix=/usr
[/code]
此路径必须是/usr而并非/usr/local
安装后则系统顺利升级到最新版的glib2
Feb3

ApacheBench测试结果解析

Author: leeon  Click: 10605   Comments: 0 Category: 优化  Tag: apache,apachebench

ab -n 10 -c 10 http://www.google.com/ 
这个命令的意思是启动ab ,向 www.google.com 发送10个请求(-n 10) ,并每次模拟10个并发用户请求(-c 10)——也就是说一次都发过去了。
-n是总共发送的请求数
-c是每次并发用户数

Benchmarking www.google.com (be patient).....done

 

 

Server Software:        GWS/2.1

Server Hostname:        www.google.com

Server Port:            80

 

Document Path:          /

Document Length:        230 bytes

 

Concurrency Level:      10

/*整个测试持续的时间*/

Time taken for tests:   3.234651 seconds

/*完成的请求数量*/

Complete requests:      10

/*失败的请求数量*/

Failed requests:        0

Write errors:           0

Non-2xx responses:      10

Keep-Alive requests:    10

/*整个场景中的网络传输量*/

Total transferred:      6020 bytes

/*整个场景中的HTML内容传输量*/

HTML transferred:       2300 bytes

/*相当于 LR 中的 每秒事务数 ,mean 表示这是一个平均值*/

Requests per second:    3.09 [#/sec] (mean)

/*相当于 LR 中的 平均事务响应时间,一次并发10个请求花费的时间 */

Time per request:       3234.651 [ms] (mean)

/*一次并发10个用户请求时的每个请求的平均响应时间*/

Time per request:       323.465 [ms] (mean, across all concurrent requests)

/*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题*/

Transfer rate:          1.55 [Kbytes/sec] received

/*网络上消耗的时间的分解,*/

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:       20  318 926.1     30    2954  //连接开销的时间

Processing:    40 2160 1462.0   3034    3154 //服务器端处理的时间与等待的时间相等

Waiting:       40 2160 1462.0   3034    3154 //等待的时间

Total:         60 2479 1276.4   3064    3184 //总共花费的时间

 

/*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中 50% 的用户响应时间小于 3064 毫秒,60 % 的用户响应时间小于 3094 毫秒,最大的响应时间小于 3184 毫秒*/


[code="bash"]
Percentage of the requests served within a certain time (ms)

50% 3064

66% 3094

75% 3124

80% 3154

90% 3184

95% 3184

98% 3184

99% 3184

100% 3184 (longest request)
[/code]


Feb3

nginx配置文档中文解释

Author: leeon  Click: 11169   Comments: 0 Category: linux  Tag: nginx

#运行用户
user nobody nobody;
#启动进程
worker_processes 2;
#全局错误日志及PID文档
error_log logs/error.log notice;
pid        logs/nginx.pid;
#工作模式及连接数上限
events {
use epoll;
worker_connections      1024;
}
#设定http服务器,利用他的反向代理功能提供负载均衡支持
http {
#设定mime类型
include      conf/mime.types;
default_type application/octet-stream;
#设定日志
log_format main        '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
#设定请求缓冲
client_header_buffer_size    1k;
large_client_header_buffers 4 4k;
#开启gzip模块
gzip on;
gzip_min_length 1100;
gzip_buffers    4 8k;
gzip_types      text/plain;
output_buffers 1 32k;
postpone_output 1460;
#设定access log
access_log logs/access.log main;
client_header_timeout 3m;
client_body_timeout    3m;
send_timeout          3m;
sendfile                on;
tcp_nopush              on;
tcp_nodelay            on;
keepalive_timeout 65;
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
#设定虚拟主机
server {
listen          80;
server_name    192.168.8.1;
charset gb2312;
#设定本虚拟主机的访问日志
access_log logs/www.yejr.com.access.log main;
#假如访问 /img/*, /js/*, /css/* 资源,则直接取本地文档,不通过squid
#假如这些文档较多,不推荐这种方式,因为通过squid的缓存
location ~ ^/(img|js|css)/ {
root    /data3/Html;
expires 24h;
}
#对 "/" 启用负载均衡
location / {
proxy_pass      http://mysvr;
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size      4k;
proxy_buffers          4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status            on;
access_log              on;
auth_basic              "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
}
}
备注:conf/htpasswd 文档的内容用 apache 提供的 htpasswd 工具来产生即可,内容大致如下:
3.) 查看 Nginx 运行状态
输入地址
http://192.168.1.1/NginxStatus/
,输入验证帐号密码,即可看到类似如下内容:
Active connections: 328
server accepts handled requests
9309    8982        28890
Reading: 1 Writing: 3 Waiting: 324
第一行表示现在活跃的连接数
第三行的第三个数字表示Nginx运行到

location参数中文详解:

location

语法:location [=|~|~*|^~] /uri/ { … }
默认:否

上下文:server

这个指令随URL不同而接受不同的结构。你可以配置使用常规字符串和正则表达式。如果使用正则表达式,你必须使用 ~* 前缀选择不区分大小写的匹配或者 ~ 选择区分大小写的匹配。

确定 哪个location 指令匹配一个特定指令,常规字符串第一个测试。常规字符串匹配请求的开始部分并且区分大小写,最明确的匹配将会被使用(查看下文明白 nginx 怎么确定它)。然后正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。如果没有找到匹配的正则表达式,使用常规字符串的结果。

有两个方法修改这个行为。第一个方法是使用 “=”前缀,将只执行严格匹配。如果这个查询匹配,那么将停止搜索并立即处理这个请求。例子:如果经常发生”/”请求,那么使用 “location = /” 将加速处理这个请求。

第二个是使用 ^~ 前缀。如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

而且它重要在于 NGINX 做比较没有 URL 编码,所以如果你有一个 URL 链接’/images/%20/test’ , 那么使用 “images/ /test” 限定location。

总结,指令按下列顺序被接受:
1. = 前缀的指令严格匹配这个查询。如果找到,停止搜索。
2. 剩下的常规字符串,长的在前。如果这个匹配使用 ^~ 前缀,搜索停止。
3. 正则表达式,按配置文件里的顺序。
4. 如果第三步产生匹配,则使用这个结果。否则使用第二步的匹配结果。

例子:

location = / {
# 只匹配 / 查询。
[ configuration A ]
}

location / {
# 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
[ configuration B ]
}

location ^~ /images/ {
# 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
[ configuration C ]
}

location ~* \.(gif|jpg|jpeg)$ {
# 匹配任何已 gif、jpg 或 jpeg 结尾的请求。然而所有 /images/ 目录的请求将使用 Configuration C。
[ configuration D ]
}

例子请求:

/ -> configuration A

/documents/document.html -> configuration B

/images/1.gif -> configuration C

/documents/1.jpg -> configuration D

注意:按任意顺序定义这4个配置结果将仍然一样。

分类

标签

归档

最新评论

Abyss在00:04:28评论了
Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
shallwe99在10:21:17评论了
【原创】如何在微信小程序开发中正确的使用vant ui组件
默一在09:04:53评论了
Berkeley DB 由浅入深【转自架构师杨建】
Memory在14:09:22评论了
【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
leo在17:57:04评论了
shell中使用while循环ssh的注意事项

我看过的书

链接

其他

访问本站种子 本站平均热度:9360 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次