我最近刚从linode迁移到阿里云。
配置:
linode上,mysql是自己搭的,跟服务器是在同一台虚拟机上;4核
阿里云,则是ECS(8核)加RDS(600M内存那款);
迁移后,profiling的结果是,http request的cpu时间降低一半(合理),而数据库访问时间增加10倍。
比如某个request的数据库操作,profiling结果在迁移前是:
sql hit:46 sql time 17ms
而迁移后则
sql hit: 46 sql time 167ms
我大概检查了10来个request的profiling结果,都类似。
我观察了RDS的控制台的性能监测,操作时间都是微秒级别的,所以RDS本身不是瓶颈。
想确认的是:是不是ECS跟RDS之间的网络传输,导致了数据库操作时间的倍增?
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
#include <mysql/mysql.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
int main(void) {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
/* Change me */
char *server = "rdsql.rds.aliyuncs.com";
char *user = "userXXX";
char *password = "XXXXX";
char *database = "XXXX";
conn = mysql_init(NULL);
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
struct timeval start, end;
long secs_used,micros_used;
gettimeofday(&start, NULL);
char *sql_cmd = "SELECT * FROM user where id=11";
/* send SQL query */
if (mysql_query(conn, sql_cmd)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
gettimeofday(&end, NULL);
printf("start: %d secs, %d usecs\n",start.tv_sec,start.tv_usec);
printf("end: %d secs, %d usecs\n",end.tv_sec,end.tv_usec);
secs_used=(end.tv_sec - start.tv_sec); //avoid overflow by subtracting first
micros_used= ((secs_used*1000000) + end.tv_usec) - (start.tv_usec);
printf("Execute SQL %s micros_used: %d\n",sql_cmd, micros_used);
res = mysql_use_result(conn);
int num_fields = mysql_num_fields(res);
/* output table name */
printf("Result of %s is :\n", sql_cmd);
while ((row = mysql_fetch_row(res)) != NULL) {
int i;
for (i = 0; i < num_fields; i++) {
printf("%s ", row ? row : "NULL");
}
printf("\n");
}
/* close connection */
mysql_free_result(res);
mysql_close(conn);
return 0;
}
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。