10/10/2018, 09:24

Load toàn bộ nôi dung web lên RAM để tối ưu tốc độ WEBSERVER

Các bạn ơn, mình đang triển khai 1 trang web nhưng gặp vấn đề sau đây:
Mình chỉ có 1 Server để HOST WEB mình đặt: WEB, Database và dữ liệu vào chung, nhưng do nhu cầu nên tài liệu trên web bị down nhiều nên HDD đọc rất nhiều. Để cải thiện tốc độ mình muốn cấu hình cho WebServer Apache load toàn bộ trang web vào RAM để khi có bất cứ yêu cầu nào thì Apache không cần phải đọc HDD nữa, dành tài nguyên đó để truy xuất dữ liệu

Các bạn giúp mình với....Cảm ơn nhiều nhiều.
s.code viết 11:28 ngày 10/10/2018
RAM của con server ấy dc mấy chục GB ???
hocvien viết 11:30 ngày 10/10/2018
Cái gì mà phải đến mấy chục GB. vài GB là được rồi.

Web của mình có 2 phần chính: code web + Data. Mình muốn để codeweb load lên RAM còn Data vẫn để trong ổ cứng bình thường và được load lên khi cần. Lúc này sẽ nhanh hơn vì ổ cứng chỉ đọc DATA chứ ko phải vừa dọc Code Web vừa đọc DATA.

Code web thì cao lắm là vài trăm MB
evodanh viết 11:24 ngày 10/10/2018
Code web thì luôn được web server compile khi có 1 request. Khi compile thì sẽ tự động query data theo yêu cầu của code(nếu có) để ra dữ liệu html cho browser.
Mình thấy cách bạn hỏi rất lạ, hình như bạn ko hiểu về cơ chế hoạt động của web cho lắm hoặc có thể mình ko hiểu đúng ý của bạn
Vô Thin viết 11:34 ngày 10/10/2018
Được gửi bởi hocvien
Cái gì mà phải đến mấy chục GB. vài GB là được rồi.

Web của mình có 2 phần chính: code web + Data. Mình muốn để codeweb load lên RAM còn Data vẫn để trong ổ cứng bình thường và được load lên khi cần. Lúc này sẽ nhanh hơn vì ổ cứng chỉ đọc DATA chứ ko phải vừa dọc Code Web vừa đọc DATA.

Code web thì cao lắm là vài trăm MB
Suy nghĩ gì mà cứ như lập trình với con trỏ / quy hoạch động trong C/C++ ấy, bậy bạ hết mức.

Bạn phải hiểu rằng trang web của bạn không khủng khiếp đến mức phải làm các việc bạn nói đâu, webserver tự biết nó nên làm gì. Bạn chỉ cần viết các câu lệnh SQL để truy xuất CSDL cho vừa đủ dùng là tốt rồi, hạn chế thấp nhất những câu lệnh SELECT * FROM ... để tránh lôi ra cả đống dữ liệu mà chỉ xài có một mẩu nhỏ.

Còn việc load hết lên RAM như bạn nói hầu như không có ích gì ngoại trừ có khả năng gây mất dữ liệu khi mất điện ở data center.
hocvien viết 11:25 ngày 10/10/2018
Suy nghĩ gì mà cứ như lập trình với con trỏ / quy hoạch động trong C/C++ ấy, bậy bạ hết mức.
cái gì mà bậy bạ hết mức, nó không giống một chút gì với con trỏ trong lập trình hết, so sánh khập khiển quá đi. Thay vì Web Server đọc source web từ HDD thì bây giờ nó đọc lần đầu tiên từ HDD và lưu vào RAM, các lần sau đọc từ RAM có phải nhanh hơn ko.

Bạn phải hiểu rằng trang web của bạn không khủng khiếp đến mức phải làm các việc bạn nói đâu, webserver tự biết nó nên làm gì. Bạn chỉ cần viết các câu lệnh SQL để truy xuất CSDL cho vừa đủ dùng là tốt rồi, hạn chế thấp nhất những câu lệnh SELECT * FROM ... để tránh lôi ra cả đống dữ liệu mà chỉ xài có một mẩu nhỏ.
Thường người ta đặt 2 Server 1 là WEB và 1 là DATABASE riêng, nhưng nếu bạn rơi vào trường hợp nhà nghèo chỉ có 1 Server và phải đặt WEB chung với DATABASE thì sao?????
Bạn có hiểu rõ về cách ổ cứng hoạt động ko mà dám nói là không ảnh hưởng. Tuy dữ liệu đọc ít nhưng di chuyển giữa những Cylinder liên tục nó làm tốc độ rất chậm. Bạn thử chép 2 file 1GB nhưng chép tuần tự xem có nhanh hơn là chép 2 file cùng lúc ko?
Còn vấn đề "Select * from ..." nếu bạn dùng mã nguồn mỡ. Mình đố bạn sửa được toàn bộ code của trang web cho tối ưu với CSDL đó.

Còn việc load hết lên RAM như bạn nói hầu như không có ích gì ngoại trừ có khả năng gây mất dữ liệu khi mất điện ở data center.
Có biết "Data Center" là cái gì không? Đây là 1 thuật ngữ trong Mạng để chỉ 1 tòa nhà với đầy đủ điều kiện đặt các Server và thường để đặt server tập trung chứ không phải là 1 máy chứa CSDL đơn thuần đâu bạn ơi.
Data Center thì không có mất điện, máy điện của nó xài được trong 1 tháng liên tục đó. Thấy người ta hay nói Data Center rồi bắt chước xài theo mới là bậy bạ hết sức.

Mình đã tìm ra câu trả lời, các bạn có thể cập nhật thêm vào skill quản trị web của mình: http://www.linuxfocus.org/English/No....html#lfindex2
jiSh@n viết 11:35 ngày 10/10/2018
Được gửi bởi hocvien
cái gì mà bậy bạ hết mức, nó không giống một chút gì với con trỏ trong lập trình hết, so sánh khập khiển quá đi. Thay vì Web Server đọc source web từ HDD thì bây giờ nó đọc lần đầu tiên từ HDD và lưu vào RAM, các lần sau đọc từ RAM có phải nhanh hơn ko.


Thường người ta đặt 2 Server 1 là WEB và 1 là DATABASE riêng, nhưng nếu bạn rơi vào trường hợp nhà nghèo chỉ có 1 Server và phải đặt WEB chung với DATABASE thì sao?????
Bạn có hiểu rõ về cách ổ cứng hoạt động ko mà dám nói là không ảnh hưởng. Tuy dữ liệu đọc ít nhưng di chuyển giữa những Cylinder liên tục nó làm tốc độ rất chậm. Bạn thử chép 2 file 1GB nhưng chép tuần tự xem có nhanh hơn là chép 2 file cùng lúc ko?
Còn vấn đề "Select * from ..." nếu bạn dùng mã nguồn mỡ. Mình đố bạn sửa được toàn bộ code của trang web cho tối ưu với CSDL đó.


Có biết "Data Center" là cái gì không? Đây là 1 thuật ngữ trong Mạng để chỉ 1 tòa nhà với đầy đủ điều kiện đặt các Server và thường để đặt server tập trung chứ không phải là 1 máy chứa CSDL đơn thuần đâu bạn ơi.
Data Center thì không có mất điện, máy điện của nó xài được trong 1 tháng liên tục đó.

Mình đã tìm ra câu trả lời, các bạn có thể cập nhật thêm vào skill quản trị web của mình: http://www.linuxfocus.org/English/No....html#lfindex2
Thế bạn nghĩ server đặt ở DC thì ko bao giờ xảy ra sự cố à
Code của bạn to đến mức nào mà sợ server quá tải khi chạy thế? Traffic cỡ nào mà phải cần thêm 1 server chạy DB vậy? Bạn có biết giá thuê 1 dedicated server là bao nhiêu ko mà dám bảo chơi riêng 1 server là nghèo? Chơi 1 lần 2 server ko phải ai cũng có khả năng đâu mà ở đó mà "thường". Học lý thuyết nhiều quá nên lậm rồi chắc? Biết nhiều về quản trị web thế mà chưa nghe nói đến cache bao giờ hay sao mà phải lên đây hỏi thế?

P/S: Đem 1 cái tip từ 1999 lên khè thiên hạ vào thời điểm 2008 đúng là value
khuongCOMPUTER viết 11:27 ngày 10/10/2018
Mình đã tìm ra câu trả lời, các bạn có thể cập nhật thêm vào skill quản trị web của mình: http://www.linuxfocus.org/English/No....html#lfindex2
Cái này là dùng Ram làm ổ cứng, nhân tiện ném cả Apache lên đó chứ load nội dung Web lên Ram hồi nào?
Thanh duc viết 11:33 ngày 10/10/2018
Đây là vấn đề tờ cũng quan tâm đại khái là bạn tạo ổ cứng ảo từ ram
move source code vào ổ cứng đố rồi run nhưng làm thế nào thì phải search tớ cũng chưa tìm hiểu kỹ.
Mọi người chưa làm thì cũng đừng cho rằng bạn ý hỏi cứ như ko biết gì thế! Toàn vặn vẹo đâu đâu lệch hết quỹ đạo.
jiSh@n viết 11:38 ngày 10/10/2018
Linux mặc định đã dùng lượng RAM còn trống làm cache rồi. Cái trò tống Apache lên Ramdisk nhiều người nghĩ ra từ xưa nhưng hiện tại hầu như chả ai áp dụng cả. RAM trên server hiện tại ko có quá thừa thải để mà có thể cắt 1 khúc ra làm ramdisk. Hơn nữa với ổ cứng SCSI, và mới đây là SSD, thì tốc độ đọc file của web server chả phải là chậm đến mức phải làm như thế.

P/S: cái yêu cầu của chủ thread web server đọc file lần đầu ở HDD rồi đẩy vào RAM, từ lần 2 sẽ đọc luôn từ RAM thì nó chả có giống với sử dụng Ramdisk để chứa file của webserver mà giống như memcache hơn
Bài liên quan
0