Thử nghĩ đến một ngày không còn các dự án outsource nữa, FPT Software, Quang Trung park, TMA đóng cửa, hàng chục ngìn lập trình viên thất nghiệp
Thử nghĩ đến một ngày không còn các dự án outsource nữa, FPT Software, Quang Trung park, TMA đóng cửa, hàng chục ngìn lập trình viên thất nghiệp
Thông tin đã bị kiểm duyệt bởi chính tác giả do chính sách bảo mật thông tin.
Thời gian vừa rồi tôi có làm việc với một vài dự án mà hiệu năng của ứng dụng là một trong những vấn đề quan trọng nhất của hệ thống (search engine) và một vài dự án đang gặp rắc rối qua lớn với vấn đề hiệu năng khi dữ liệu của hệ thống lớn (enterprise content management) nên tôi sẽ viết một số bài liên quan đến vấn đề này.
Bài viết đầu tiên sẽ giải thích câu hỏi cơ bản : hiệu năng của ứng dụng là cái gì?
Hiệu năng của ứng dụng bao gồm các yếu tố cơ bản sau: thời gian đáp ứng người dùng, lưu lượng đáp ứng hệ thống, việc sử dụng tài nguyên của hệ thống và khả năng sẵn sàng của hệ thống.
Thời gian đáp ứng người dùng (người dùng cuối)
Thời gian đáp ứng chính là cái cơ bản nhất mà người dùng cảm nhận được về hiệu năng của hệ thống, do đó mặc dù những phép đo đạc khác cũng quan trọng nhưng thời gian đáp ứng người dùng là quan trọng nhất. Thời gian đáp ứng người dùng chậm có thể dẫn tới:
Chỉ cần thời gian đáp ứng nhanh hơn một ít cũng ảnh hưởng lớn đến cảm giác của người dùng về tốc độ hệ thống. Những tiêu chuẩn đánh giá hiệu năng khác sẽ bàn tới ở đây được đo đạc và cân nhắc để chắc chắn rằng thời gian đáp ứng người dùng vẫn có thể chấp nhận được trong những tình huống khác nhau.
Chúng ta có thể đo đạc thời gian đáp ứng người dùng bằng 2 cách sau: chủ động theo dõi qua những giao dịch giả lập và theo dõi thụ động.
Một giao dịch giả lập bào gồm một chuỗi các yêu cầu dịch vụ để thi hành một đơn vị chức năng nghiệp vụ, giao dịch giả lập này được thực thi trong một khoảng thời gian. Thời gian đáp ứng của những giao dịch giả lập được ghi lại với 2 mục đích: ghi nhận xu hướng và cảnh báo. Phân tích xu hướng của giao dịch giả lập cung cấp cho chúng ta biết xu hướng về hiệu năng của hệ thống tác động đến người dùng như thế nào trước khi người dùng bị tác động bởi điều đó. Bạn có thể thấy CPU và bộ nhớ được sử dụng có xu hướng tăng lên và những xu hướng này cần được quan tâm, vì khi đó nó sẽ ảnh hường đến người dùng. Giao dịch giả lập cũng đóng vai trò hoàn hảo để cho ta những cảnh báo liên quan đến hiệu năng của ứng dụng. Chúng ta có thể có những trigger để khi hiệu năng một dịch vụ của ứng dụng đặt tới một mức nào đó thì hệ thống sẽ tự động thông báo đến người quan trị hệ thống. Cảnh báo có thể đơn giản là thông báo đơn giản, email … khi hiệu năng hệ thống đạt tời một mức nào đó hệ thống sẽ tự phần tích những thông tin nó có để đưa ra những thông tin chi tiết hơn.
Trong những ứng dụng lớn, giao dịch giả lập được thực hiện từ những vùng địa lý khác nhau mục đích là để hiểu rõ thời gian đáp ứng khác nhau như thế nào ở những địa phương khác nhau. Trong một vài trường hợp khi một tổ chức có nhiều ứng dụng được đặt ở những mạng vật lý khác nhau, khi đường truyền chậm chúng ta có thể cung cấp các giải pháp liên quan đến chuyển hướng yêu cầu. Giao dịch giả lập thường được hiểu là theo dõi chủ động bởi vì nó tiến hành động với ứng dụng, một phương pháp hiệu quả khác để đo thời gian đáp ứng người dùng là theo dõi bị động. Theo dõi bị động theo dõi những yêu cầu của người dùng real-time khi nó được thực thi. Kết quả là nó cung cấp cho ta một bức tranh tổng quát và thực tế hơn về thời gian đáp ứng người dùng từ đó ta có thể tính toán để đưa ra những dữ liệu thực tế như thời gian đáp ứng lớn nhất, thời gian đáp ứng nhỏ nhất, trong bình và etc… Theo dõi bị động giúp tìm ra những lỗi mà chỉ xảy ra với một vài yêu cầu nghiệp vụ nhất định với những người dùng nhất định.
Lưu lượng đáp ứng
Lưu lượng đáp ứng xác định số công việc mà hệ thống có thể hoàn thành trong một khoảng thời gian, trong ứng dụng J2EE chúng ta thường xác định lưu lượng đáp ứng bằng số yêu cầu mà chúng ta có thể xử lý trong một giây. Mục tiêu của một hệ thống là tăng tối đa lưu lượng đáp ứng và đo bằng số yêu cầu đáp ứng đồng thời nhận được. Lưu lượng đáp ứng cao là phục vụ yêu cầu đáp ứng nhanh và hiệu quả, nó phản ánh thời gian đáp ứng nhanh. Lưu lượng đáp ứng cao cũng làm nổi bật hiệu quả chung của toàn hệ thống.
(to be continued)
Cách đây khoảng hơn một năm mình cũng đã có nói chuyện với một vài người đồng nghiệp về sự hạn chế của chuẩn HTML 4. Phiên bản 4 đã ra đời cách đấy hàng chục năm thời mà các khái niệm như AJAX chưa được biết đến và google còn chưa ra đời. Sự thịnh hành của AJAX và Rich Internet Application (RIA) trong thời gian vừa qua chính là để bù đắp vào những điểm thiếu và yếu của phiên bản 4. Hiện giờ đã có quá nhiều AJAX và RIA framework, mỗi cái đều được thiết kế và thi hành theo những kiểu khác nhau. Hy vọng là các đặc tả của bản HTML5 có thể bù đắp được một phần nào những yếu kém này. Nếu đặc tả mới đủ mạnh thì mảnh đất cho các framework hiện tại sẽ bị thu nhỏ lại do đó các framework hiện tại nếu yếu thì sẽ biến mất, nếu mạnh thì phải thay đổi để đáp ứng được những nhu cầu mới của người dùng. Các ngôn ngữ lập trình web đang phổ biến hiện nay như java, php, .NET cũng sẽ phải nhanh bắt nhịp để thay đổi cho phù hợp.
Khác nhau giữa HTML 5 vàHTML 4: http://www.w3.org/TR/html5-diff/
Đặc tả: http://www.w3.org/html/wg/html5/
Hôm nay mình ngồi copy mấy cái máy ảo của VMWare từ một máy Ubuntu server này sang một Ubuntu Server khác thì khi khởi động máy ảo đó lên không vào được mạng nữa, lúc trước nó có tên là eth0.
Thử khởi động lại card mạng:
sudo /etc/init.d/networking restart
thì nó báo lỗi không có thiết bị: no such device
Mình phải dùng lệnh sau:
ifconfig -a
Thì thấy bây giờ có một cái card mạng khác tên là eth1
Thế là mình phải cấu hình lại file /etc/network/interfaces :
sudo nano /etc/network/interfaces
và chuyển tất cả eth0 thành eth1 sau đó khởi động lại mạng:
sudo /etc/init.d/networking restart
Phù, bây giờ thì nó chạy ngon rồi!
Lần đầu tiên mình cài Netbeans 6 lên Ubuntu có chạy Compiz thì chỉ thấy cái cửa sổ cài đặt toàn một màu xám, sau một hồi tìm kiếm lên mạng thì mới biết do bộ awt toolkit của java có vấn đề về tương thích với thằng compiz.
Để fix lỗi này bạn có thể dùng một trong 2 cách sau:
1. Soạn thảo file /etc/enviroment thêm vào dòng sau ở dưới:
AWT_TOOLKIT=MToolkit
2. Soạn thảo file chạy của netbeans (Netbeans/bin/netbeans) và thêm vào dòng sau ở phía trên:
export AWT_TOOLKIT=MToolkit
Cả 2 cách có thể áp dụng cho một số chương trình java khác gặp lỗi tương tự Netbeans như: Poseidon UML, Aqua Fold Aqua Studio …
Chú ý là với cách thứ nhất có thể làm cho chương trình java khác dùng awt toolkit chạy bị lỗi crash jvm (vd với HOAECM Desktop 1.0). Thế nên bạn nên áp dụng cách thứ 2.
Bạn cần thực hiện câu lệnh sau:
sudo usermod -G admin -a [ username ]
Câu lệnh trên đưa người dùng [username] vào trong nhóm admin để người dùng đó có thể sử dụng sudo.
Chúng ta sử dụng tool có sẵn của subversion là svnadmin để lưu toàn bộ một respository ra một file sau đó cũng dùng svnadmin để để đưa vào respository mới:
Lưu ra file:
svnadmin dump [đường dẫn đến respository] > [tên file]
Sau đó ngồi chờ vì với respository lớn thì khá lâu
Sau đó đưa vào respository mới:
svnadmin load [đường dẫn đến respository] < [file đã tạo khi dump]
Sau khi đã cài và dùng thử một số chương trình download manager dành cho linux cả dòng lệnh và giao diện như gwget, curl, d4x,wget mình đều thấy không được tiện và không nhanh hơn cho lắm. Sau đó mình thử dùng downthemall là một addon dành cho Firefox thì thấy tiện hơn và nhanh hơn (hỗ trợ chỉnh số luồng cần download, resume).
Download tại: https://addons.mozilla.org/en-US/firefox/addon/201
Hỗ trợ firefox từ 1.5 đến 3.0 beta.