首页 > 代码库 > 构建高性能Web站点(修订版)笔记

构建高性能Web站点(修订版)笔记

构建高性能Web站点(修订版)2012.6

  1. p14 ‘反馈机制’:逐包确认 --> 小batch连续发送
  2. 一定需要全局编址吗?(可以使用邻居路由+端到端IBE)
  3. 电磁波速度:铜线中电信号2.3*10^8,光纤约2*10^8(全反射增加了传输距离)
  4. 系统负载:/proc/loadavg
  5. 上下文切换:Nmon
  6. IOWait(注意一点:磁盘IO是串行的!)
  7. 减少系统调用... ZeroCopy?AIO?
    1. strace:每次请求都要检测.htaccess?(哦,设置了AllowOverride all)
  8. 内存分配:Apache是多进程+内存池(prefork模式,VS work/M2M模式),
    1. 而NginX是单进程多线程:10000个非活跃http连接只需2.5MB内存
  9. 长连接:KeepAliveTimeout 30(默认5s)
    1. ab -n10000 -c100 -k http://...
  10. 进程阻塞查看:strace -p <PID> 这个工具不错
  11. 同步非阻塞I/O:一般只对网络I/O有效,O_NONBLOCK
  12. 多路就绪I/O:
    1. 4.2 BSD select
    2. Unix v3 poll
    3. Linux 2.4 SIGIO 边缘触发
    4. Sun Solaris /dev/poll
    5. /dev/epoll:+mmap(节省了fd复制?)
    6. Linux 2.6 epoll:EPOLLET(Lighttpd×,NginX支持)
    7. FreeBSD kqueue
  13. 内存映射
    1. strace:open --> mmap2 --> writev --> munmap(对小文件更好,大文件用sendfile)
  14. 直接I/O:O_DIRECT, 如InnoDB引擎用到
  15. 异步I/O(似乎底层用的是内核线程,并没有原生的实现?)
  16. 动态脚本加速
    1. Zend/zend_language_scanner.l <-- 最终映射到对C函数的调用,但似乎跟JIT还是不一样的?
      1. 作者所谓的opcode可能是针对PHP而言的,对Java应该是字节码(bytecode)
    2. apc.cache_by_default = on
      1. 或使用XCache/eAccelerator(嗯,这个时候HHVM还没出来呢)
    3. XDebug
      1. xdebug_time_index()
      2. xdebug_start_code_coverage(); <-- ?这个是怎么实现的
      3. Profiler:xdebug.profiler_ouput_dir/name=...%p
        1. KCacheGrind图形方式查看
  17. 浏览器缓存
    1. 协商:Last_Modified/ETag
    2. 不用协商:Expires(依据服务器端时间!)
      1. Cache-Control: max-age=30
  18. Web缓存
  19. 反向代理:反向NAT(DNAT)-->服务器集群
    1. Nginx:proxy_pass
    2. Squid --> Varnish:HTTP响应头部增加了Via:...字段
      1. VCL?wordpress:关闭admin以外的cookie设置
    3. ESI --> Ajax
    4. 用户IP:+ HTTP_X_FORWARDED_FOR
  20. Web组件分离
    1. 视频:吞吐率无意义,只要下载速度>码率即可
  21. 分布式缓存(memcached,略)
  22. 数据库性能优化
    1. p270 MemcacheDB
  23. Web负载均衡
    1. 动态DNS(RFC2126)
    2. IPVS:LVS-NAT LVS-DR(配置方法略)
  24. 共享文件系统(略)
  25. 内容分发和同步
    1. WebDAV、rsync、inotify+hash树
  26. 分布式文件系统(MogileFS,略)
  27. 数据库扩展
    1. 主从复制
    2. 读写分离(反向代理:MySQL Proxy + Lua配置)<-- 不错!这个工具很好!!
    3. 垂直分区*
    4. 水平分区:Spock Proxy(基于MySQL Proxy)
  28. 分布式计算:Gearman?
  29. 性能监控(略) 

构建高性能Web站点(修订版)笔记