yadihttpd
1.0.0
✅ 隊列多線程
使用方法如下:
pi@centos: ~ /yadihttpd$ ./yadihttpd
usage: ./yadihttpd < port > < websit root > < log dir >
要提前创建好文件夹和响应静态文件
如:./yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
pi@centos: ~ /yadihttpd$ sudo ./yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
应设置euid, 如:chmod u+s ./yadihttpd示例博客項目:博客文件樹
【博客主頁】
0.1版本完成的功能:
✅ 打印日誌,讀取消息頭,日誌文件名根據時間生成
✅ epoll版本並返回相應文件
✅ 日誌隊列,自動切換,寫日誌單獨線程
✅ 大文件支持
✅ 文件讀取權限限制
✅ 簡易博客
顯示具體行號,函數,文件名
查看日誌線程:
日誌線程一般睡眠狀態(隊列空,代表不忙,釋放鎖,阻塞一秒)。
? 訪問鏈接前日誌:
? 訪問鏈接後日誌:
? 日誌記錄一定條數時(如5000),自動切換文件。
圖片讀取
大文件支持(may be some bugs)
epollout處理緩衝區、設置非阻塞fd, 服務器可以同時處理多個請求。
服務器文件根目錄佈局
pi@raspberrypi: ~ /www $ tree
.
├── blog # marked转换之后的博客
│ ├── linux_notes.html
│ └── test.html
├── css
│ ├── my.css
│ └── prism.css # 代码高亮等等
├── img
│ ├── 1.jpg
│ ├── eg_tulip.jpg
│ ├── lake.jpg
│ └── log.jpg
├── index.html
├── js
│ └── prism.js # 代码高亮等等
└── md # 初始markdown形式
├── linux_notes.md
├── md2html.sh #批量转换脚本 md->html
├── test.md
└── tmp.mdfile所用到庫:
marked:markdown -> html
prismjs: 代碼高亮等佈局
? fd洩露排查
是有地方忘了close了。測試了一會,如下圖,貌似沒有fd洩露的問題了,但是還有個偶爾段錯誤還沒查出來。
? 段錯誤排查
? url過長:感謝大晚上測試我網站的惡意程序
? url直接訪問目錄錯誤修復,同上。
一個accpet線程,一個日誌線程,三個子線程處理請求,每秒請求每個核大概1400。