900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Mysql查询超时优化 apache和nginx性能差很多吗 – 数据库 – 前端 登录主机与mysql客户机

Mysql查询超时优化 apache和nginx性能差很多吗 – 数据库 – 前端 登录主机与mysql客户机

时间:2019-08-01 10:39:55

相关推荐

Mysql查询超时优化 apache和nginx性能差很多吗 – 数据库 – 前端 登录主机与mysql客户机

同步与异步

同步:同步是指调用者发起一个请求,直到请求返回结果之后,才进行下一步操作。简单来说,同步就是必须一件事一件事的做,等前一件做完了,才能做下一件事。

异步:调用者发起一个请求,在没有得到返回结果之前,可以继续执行后续操作。异步相对同步来讲,二者的区别主要在于是否需要等待某操作的返回结果。

阻塞与非阻塞

阻塞:阻塞一般是指在调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会被唤醒执行后续的操作。

非阻塞:非阻塞是指在调用结果没有返回之前,该调用不会阻塞住当前线程。

epoll

epoll是指当文件描述符的内核缓冲区非空的时候,发出可读信号进行通知,当写缓冲区不满的时候,发出可写信号的一种I/O事件通知机制,是linux 内核实现IO多路复用的一个实现。

文件描述符数目没有上限:通过epoll_ctl()来注册一个文件描述符,内核中使用红黑树的数据结构来管理所有需要监控的文件描述符。基于事件就绪通知方式:一旦被监听的某个文件描述符就绪,内核会采用类似于callback的回调机制,迅速激活这个文件描述符,这样随着文件描述符数量的增加,也不会影响判定就绪的性能。维护就绪队列:当文件描述符就绪,就会被放到内核中的一个就绪队列中,这样调用epoll_weit获取就绪文件描述符的时候,只要取队列中的元素即可,操作的时间复杂度恒为O(1)。使用mmap加速内核与用户空间的消息传递。selectselect()的可移植性更好,在某些Unix系统上不支持poll()。select() 对于超时值提供了更好的精度:微秒,而poll是毫秒。单个进程可监视的fd数量被限制。需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大。对fd进行扫描时是线性扫描。fd剧增后,IO效率较低,因为每次调用都对fd进行线性扫描遍历,所以随着fd的增加会造成遍历速度慢的性能问题。select() 函数的超时参数在返回时也是未定义的,考虑到可移植性,每次在超时之后在下一次进入到select之前都需要重新设置超时参数。总结Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll,epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起select效率会高一些。epoll不会随着监听fd(文件描述符)数目的增长而降低效率。select采用的是轮询来处理,在高并发服务器中,轮询I/O是最耗时间的操作之一,轮询的fd(文件描述符)数目越多,自然耗时越多,性能越低。

Nginx运行效率高、CPU内存占用率低、代理功能强大、占用资源少、支持更多的并发连接,主要用来做动静分离和负载均衡。Apache在动态资源处理和稳定性方便要优于Nginx,但是静态资源处理不如Nginx。

如果解决了你的疑惑,请点点赞,点点关注,谢谢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。