Tôi hoàn toàn không biết cách đặt câu hỏi vì chúng tôi chưa biết nhiều, nhưng tôi muốn hỏi sớm hơn vì điều này có vẻ như là một điều không nên bỏ qua.
Tuần này chúng tôi bắt đầu có vấn đề với máy chủ cơ sở dữ liệu của chúng tôi. Nó dường như là một vấn đề nhất quán dữ liệu và nó biểu hiện bằng thời gian chờ ngay cả trên các truy vấn rất đơn giản và các bảng nhỏ. Chúng tôi đã "khắc phục" sự cố bằng cách khởi động lại máy chủ vào đầu tuần này và nó đã biến mất, nhưng bây giờ có vẻ như nó sẽ quay trở lại và lần này là trên các bảng quan trọng hơn. Chẳng hạn, tôi vừa thực hiện một số điều tra và tôi đang xem một truy vấn như thế này:
SELECT * FROM table WHERE id = 1234
cho một ID cụ thể. Bảng có khoảng hơn 30 triệu hàng. Nhưng có vẻ như nó chỉ xảy ra đối với một phần nhỏ hồ sơ. Tôi đặt cược khi tôi khởi động lại máy chủ hoặc sao lưu và khôi phục cơ sở dữ liệu trên một máy chủ khác, tất cả sẽ ổn. Nhưng tôi sẽ cố gắng.
Tại thời điểm này, tôi đang chạy:
DBCC CHECKTABLE ('table', NOINDEX)
nhưng có vẻ như nó sẽ chạy mãi mãi. Khi chúng tôi gặp sự cố lần đầu tiên, tôi đã kiểm tra bảng vi phạm và nó vẫn ổn. Bàn mới này lớn hơn nhiều.
Một số thông tin kỹ thuật cơ bản:
- Máy chủ SQL 2008 R2, Windows Server 2008 R2
- AWS / EC2, m2.2xlộng, RAM 32 GB, RAID 4 x 1TB 0
- hầu như không có đĩa IO, có vẻ như hầu hết db nằm trong bộ nhớ
- tổng kích thước db: 100GB
Khối lượng ELB là "thương hiệu" mới. Chúng tôi đã tạo ra chúng trong tuần này.
Chỉnh sửa: Tôi chỉ sử dụng lệnh sau:
SELECT
sqltext.TEXT,
req.session_id,
req.blocking_session_id,
req.wait_type,
req.wait_time,
req.last_wait_type,
req.wait_resource,
req.open_transaction_count,
req.transaction_id,
req.total_elapsed_time
FROM
sys.dm_exec_requests req
CROSS APPLY
sys.dm_exec_sql_text(req.sql_handle) AS sqltext
và nhận thấy rằng truy vấn của tôi, nó đang chờ khóa chia sẻ (LCK_M_S) trong đó phiên chặn đang chờ một khóa chia sẻ khác bị chặn bởi một phiên không tồn tại.
Chỉnh sửa 2: OK, phiên tồn tại (tôi thấy nó sử dụng sys.dm_exec_sessions
), nhưng hiện tại nó không xuất hiện để làm bất cứ điều gì.
Chỉnh sửa 3: Tôi không thể tìm thấy bất cứ điều gì thú vị về phiên này. Tôi thấy nó đến từ máy chủ web nào, nhưng không nhiều.
Chỉnh sửa 4: Chỉnh sửa 4: Chúng tôi đã tìm thấy một lỗi có thể có trong mã của chúng tôi: một chức năng không đảm bảo kết nối cơ sở dữ liệu bị đóng. Mặt khác, có vẻ như giao dịch mà chức năng đang sử dụng được sử dụng được xử lý chính xác trong trường hợp tất cả các khóa phải được xóa. Nó vẫn chưa rõ ràng đối với tôi, nhưng dường như đó là lý do có thể. Chúng tôi sẽ sửa lỗi và để mắt đến nó.