Khi nào một ứng dụng sử dụng quá nhiều phiên?


9

Tôi đang làm việc trên một ứng dụng máy chủ-máy khách sử dụng OCI để liên lạc với Oracle. Trước đây, ứng dụng của chúng tôi thường coi các phiên là một nguồn tài nguyên vô hạn, hoàn toàn có thể gây bất lợi cho các ứng dụng khác đang chia sẻ máy chủ Oracle đó.

Tôi đang cố gắng thuyết phục các nhà phát triển đồng nghiệp của mình rằng điều quan trọng là ứng dụng của chúng tôi chơi tốt với những người khác và không phải là một con heo tài nguyên như vậy.

Tại thời điểm nào, các DBA của Oracle sẽ xem xét một ứng dụng đang sử dụng (hoặc lạm dụng) các phiên quá mức?

EDIT: Hiện tại một trong những khách hàng lớn nhất của phiên là một thành phần này sử dụng tải đường dẫn trực tiếp để tải số lượng lớn một số bảng (20-30) song song.

Câu trả lời:


10

Như với tất cả mọi thứ, nó phụ thuộc.

Nếu bạn đang sử dụng OCI, tôi cho rằng bạn đang phát triển ứng dụng khách / máy chủ. Tôi thường muốn cơ sở dữ liệu trong tình huống đó hỗ trợ các kết nối máy chủ được chia sẻ và tôi muốn yêu cầu kết nối máy chủ dùng chung khi ứng dụng được kết nối với cơ sở dữ liệu. Điều đó cải thiện hiệu suất của ứng dụng bằng cách giới hạn số lượng công việc mà cơ sở dữ liệu phải làm để tạo một phiên mới. Điều đó có tác dụng phụ là để lại nhiều tài nguyên có sẵn trên máy chủ cho những người khác. Sử dụng các kết nối máy chủ được chia sẻ sẽ liên quan đến đường dẫn mã dài hơn khi cơ sở dữ liệu thực hiện các truy vấn tiếp theo do truy vấn phải được gửi đến quy trình máy chủ dùng chung nhưng điều đó thường không phải là vấn đề lớn nếu số lượng quy trình máy chủ được chia sẻ là hợp lý.

Việc mở một số phiên cũng có thể là một vấn đề nếu DBA không sử dụng quản lý PGA tự động. Nếu bạn đang sử dụng quản lý PGA thủ công, PGA được định cấu hình trên cơ sở mỗi phiên để mỗi phiên có thể phân bổ riêng SORT_AREA_SIZEcho các loại trong số các thành phần PGA khác. Nếu bạn đã tạo một số lượng lớn phiên trong cơ sở dữ liệu bằng cách sử dụng quản lý PGA thủ công và mỗi phiên cố gắng tối đa hóa việc sử dụng PGA của nó, bạn có thể dễ dàng bỏ đói máy chủ RAM và gây ra vấn đề về hiệu suất cho mọi người. Giả sử bạn đang sử dụng Oracle 10.1 trở lên, tuy nhiên, quản lý PGA tự động có sẵn. Trong trường hợp đó, DBA định cấu hình PGA_AGGREGATE_TARGET(hoặc bao gồm PGA trong MEMORY_TARGET11g) và cơ sở dữ liệu đảm bảo rằng PGA tổng hợp trong tất cả các phiên bị hạn chế để cơ sở dữ liệu hết tài nguyên.

Nếu cơ sở dữ liệu hỗ trợ các kết nối máy chủ được chia sẻ, ứng dụng của bạn sẽ có kết nối máy chủ được chia sẻ và cơ sở dữ liệu sử dụng quản lý PGA tự động, hầu hết các DBA sẽ không quan tâm đến việc bạn tạo ra bao nhiêu phiên.

Bây giờ, nếu bạn đang tạo nhiều phiên để bạn có thể thực hiện nhiều công việc song song, điều đó sẽ tạo ra các vấn đề về hiệu suất hơn và hơn số phiên. Thật dễ dàng để định cấu hình cơ sở dữ liệu để hỗ trợ 1000 phiên, ví dụ, việc cấu hình cơ sở dữ liệu để không bị chết trong một đống nếu tất cả 1000 phiên đồng thời đưa ra một truy vấn khó khăn đối với kho dữ liệu. Nếu ứng dụng của bạn đang sử dụng hết tất cả các tài nguyên có sẵn cho cơ sở dữ liệu cho các truy vấn của bạn, DBA có thể muốn xem xét sử dụng Trình quản lý tài nguyên Oracleưu tiên các ứng dụng khác nhau và / hoặc người dùng khác nhau. Ví dụ: DBA có thể định cấu hình Trình quản lý tài nguyên để nếu mức sử dụng CPU đạt 100%, ứng dụng của bạn trong tổng hợp nhận được 50% CPU, một số ứng dụng khác trong tổng hợp nhận được 25% và tất cả các ứng dụng khác nhận 25% còn lại . Nếu không có yêu cầu nào khác đang chờ xử lý, ứng dụng của bạn sẽ được sử dụng miễn phí tất cả 100% CPU.

Nếu bạn đang chạy song song mọi thứ, thì cũng có thể hữu ích khi điều tra khả năng chạy song song của Oracle vì điều đó có thể liên quan đến ít chi phí hơn là viết mã song song của riêng bạn. Ví dụ, tôi hy vọng rằng việc viết một ứng dụng khách sẽ gửi các câu lệnh sử dụng truy vấn song song của Oracle để thực thi thay vì mở nhiều phiên và thực hiện từng câu lệnh từ một luồng riêng biệt trong ứng dụng của bạn Oracle đã không sử dụng truy vấn song song để thực hiện bất kỳ câu lệnh nào. Nếu bạn sử dụng truy vấn song song, cơ sở dữ liệu cũng có thể điều chỉnh số lượng nô lệ song song được sinh ra để khi cơ sở dữ liệu đặc biệt bận rộn, các nô lệ song song được khởi động ít hơn và khi cơ sở dữ liệu tương đối nhàn rỗi, nhiều nô lệ được khởi động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.