@WillireamAngel
2018-05-14T13:19:37.000000Z
字数 3058
阅读 1017
Linux
nginx -c [config flie]
nginx -t #调试配置文件,不运行
主进程:/usr/local/nginx/logs/nginx.pid
TERM, INT | 快速关闭 |
---|---|
QUIT | 从容关闭 |
HUP | 重载配置用新的配置、开始新的工作进程、从容关闭旧的工作进程 |
USR1 | 重新打开日志文件 |
USR2 | 平滑升级可执行程序 |
WINCH | 从容关闭工作进程 |
重载更新配置
先测试配置,再平滑改变配置文件。
过程:nginx接收HUP信号-->解析配置文件并应用-->运行新进程,平滑关闭旧进程(通知关闭监听套接字,为当前连接提供服务直到所有客户端服务完成,配置文件失败继续使用旧配置工作)
平滑升级二进制代码
新程序替换旧程序(备份)-->发送kill -USR2 pid
给主进程,主进程重命名.pid文件为.oldbin-->执行新的程序-->启动新的master进程和worker进程。
过程中,新旧进程同时运行,需要发送WINCH给旧进程使其从容关闭,旧进程处理完所有连接的请求后退出,新进程处理,若需要只留下新服务就发送QUIT给旧进程即可。
恢复旧进程
--|旧服务器还未关闭监听套接字,可实现旧服务恢复:
发送HUP信号给旧进程(不重载配置启动)-->发送QUIT给主进程(从容关闭工作进程)-->发送TERM给主进程(强制退出)或发送KILL信号使其退出-->.pid文件还原,环境恢复升级前。
server_names_hash_max_size
和 server_names_hash_bucket_size
Hash table和Hash map的差别?(JAVA)
- HashTable 基于 Dictionary 类,而 HashMap 是基于 AbstractMap。Dictionary 是任何可将键映射到相应值的类的抽象父类,而 AbstractMap 是基于 Map 接口的实现,它以最大限度地减少实现此接口所需的工作。
- HashMap 的 key 和 value 都允许为 null,而 Hashtable 的 key 和 value 都不允许为 null。HashMap 遇到 key 为 null 的时候,调用 putForNullKey 方法进行处理,而对 value 没有处理;Hashtable遇到 null,直接返回 NullPointerException。
- Hashtable 方法是同步,而HashMap则不是。我们可以看一下源码,Hashtable 中的几乎所有的 public 的方法都是 synchronized 的,而有些方法也是在内部通过 synchronized 代码块来实现。所以有人一般都建议如果是涉及到多线程同步时采用 HashTable,没有涉及就采用 HashMap,但是在 Collections 类中存在一个静态方法:synchronizedMap(),该方法创建了一个线程安全的 Map 对象,并把它作为一个封装的对象来返回。
- 如果你不需要线程安全,那么使用HashMap,如果需要线程安全,那么使用ConcurrentHashMap,Hash table已经被淘汰了。
I/O多路复用:单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流 。
Apache
Cherokee
Lighttpd (Lighty)
thttpd
在什么情况下使用Nginx比使用squid要好? 反之亦然。
大体上来说nginx主要用于反向加速代理而不是像squid那样做为常规代理服务器。Nginx的最大优势在于高负载情况下内存和CPU的低消耗。 我不认为squid能给你带来比nginx更好的性能。
我能关闭从代理服务器到后端服务器的缓存吗或者使用上传进度特性?
没法
(5)负载均衡算法
- 轮询(默认)
- weight
- ip_hash
- fair(第三方)
- url_hash(第三方)
1.$args
2.$content_length
3.$content_type
4.$document_root
5.$document_uri
6.$host
7.$http_user_agent
8.$http_cookie
9.$limit_rate
10.$request_body_file
11.$request_method
12.$remote_addr
13.$remote_port
14.$remote_user
15.$request_filename
16.$request_uri
17.$query_string
18.$scheme
19.$server_protocol
20.$server_addr
21.$server_name
22.$server_port
23.$uri
...
flag标记有: