1.网站访问很慢原因
服务端的原因
- 1.服务器出口带宽不够用。
- 2.服务器负载过大忙不过来,比如说CPU和内存消耗完了
- 3.网站的开发代码没写好,例如mysql语句没有进行优化,导致数据库的读写相当耗费时间。
- 4.数据库的瓶颈。数据库的规模特别大的,进行全局查询就会比较慢
- 5.硬件配置低
客户端的原因
CPU或者是内存被占满
2.怎么检测网页卡顿原因
检测方法
-
1.先看下是莫个用户访问慢还是所有人
-
2.发现确实是自己服务器或者网站的问题,那么可以利用浏览器的调试功能(一般浏览器都会有),调试网络看看各种数据加载的速度,哪一项消耗了多少时间都可以看到,是哪块数据耗时过多,是图片加载太慢,还是某些数据加载老半天都查不出来。
-
3.然后针对服务器的负载情况,可以去查看下服务器硬件(网络带宽、CPU、内存)的消耗状况
-
DNS解析时长问题: 可以通过购买解析服务, 来让自己的域名在各地DNS更多缓存
-
网络带宽瓶颈: 考虑增加带宽网络带宽瓶颈: 考虑增加带宽 网络线路波动: 考虑CDN,或者镜像站第二,要考虑到服务器问题1.
是否有服务器过载: 考虑增加硬件 -
I/O操作:数据库的频繁读写,服务器的频繁请求(包括静态文件的读取,图片的读取)等都属于I/O问题。对于数据库的问题,首先要优化SQL,存储过程等。
-
4.如果发现硬件资源消耗都不高,都比较充裕,那要去看看是不是程序的问题了。这个可以通过查日志来找,比如PHP日志、Apache日志、mysql日志等等的错误日志,特别如mysql有个慢查询的日志功能,可以看到是不是某条mysql语句特别慢,如果某条语句花的时间太长,那这条语句很有可能有问题。
-
5.至于说到的数据库太庞大,这个直接看就看得到了,比如一个表的文件大小变得特别大了。
-
6是否有DDOS攻击(CC攻击,攻击web页面)
优化方法 -
1.出口带宽的话,加带宽
-
2.mysql优化
-
3.数据库太庞大,为了读写速度,进行‘拆表’、‘拆库’,,就是把数据表或者数据库进行拆分。
-
4.采用非关系型数据库,它使用了缓存机制,它把数据缓存到了内存,用户访问数据直接从内存读取,读取速度就比在磁盘中读取快了很多
-
5.采用CDN(内容分发网络)
3.常见的sql语句优化规则
- 1)不要有超过5个以上的表连接(JOIN)
- 2)考虑使用临时表或表变量存放中间结果。
- 3)少用子查询
- 4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜。
4.查询速度慢的原因
- 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 2、I/O吞吐量小,形成了瓶颈效应。
- 3、没有创建计算列导致查询不优化。
- 4、内存不足
- 5、网络速度慢
- 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
- 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
- 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
- 9、返回了不必要的行和列
- 10、查询语句不好,没有优化
5.如何简单优化 Linux系统
- 1.不用root,添加普通用户,通过sudo授权管理
- 2.更改默认的远程连接SSH服务端口及禁止root用户远程连接
- 3.定时自动更新服务器时间 配置国内yum源 关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)
- 调整文件描述符的数量
- 精简开机启动服务(crond rsyslog network sshd) 内核参数优化(/etc/sysctl.conf)
- 更改字符集,支持中文,但建议还是用英文字符集,防止乱码 锁定关键系统文件
- 清空/etc/issue,去除系统及内核版本登录前的屏幕显示
6.能上QQ但不能上网问题精解:
- 一、感染了病毒所致
- 二、与设置代理服务器有关
- 三、DNS服务器解释出错
- 四、系统文件丢失导致IE不能正常启动
- 五、IE损坏
- 六、HOSTS文件的问题
- 七、系统文件的问题
- 八、杀毒软件的实时监控问题
- 九、ApplicationManagement服务的问题
- 十、网络协议和网卡驱动的问题
7.如何重置mysql root密码?
一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:
- 1、 在SHELL环境下,使用mysqladmin命令设置: mysqladmin –u root –p password “新密码” 回车后要求输入旧密码
- 2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:
Update mysql.user set password=password(‘新密码’) where user=’root’;flush privileges;(注意:mysql语句要以分号”;”结束) - 3、 在mysql>环境中,使用grant命令,修改root用户的授权权限。
grant all on . to root@’localhost’ identified by ‘新密码’;
二、 如查忘记了mysql数据库的ROOT用户的密码,又如何做呢?方法如下: - 1、 关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)
- 2、 使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务
/usr/local/mysql/bin/mysqld_safe --skip-grant-table &
- 3、 使用空密码的root用户登录数据库,重新设置ROOT用户的密码
#mysql -u root
Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;
Mysql> flush privileges;