Saya setuju dengan GBN dan Marian.
Untuk menjawab pertanyaan Anda mengenai 2-CPU yang menangani 25 permintaan: Saya memiliki sistem 2-CPU yang mendukung sekitar 750 koneksi pengguna dan rata-rata berjalan dari 4K Permintaan Batch per detik. Beberapa item penting bagi saya: Desain, Manajemen, dan Tuning. Jika Anda mulai dengan desain aplikasi dan basis data yang buruk maka Anda akan gagal memuat (pikirkan penskalaan).
CPU tinggi dapat menunjukkan tekanan memori. Anda menyebutkan hanya ada 7GB memori yang tersedia untuk SQL Server. Jika Anda memiliki indeks berkinerja buruk (Terlalu banyak indeks, indeks salah, atau tidak ada indeks) maka ini akan menyebabkan sistem untuk halaman lebih banyak dari database ke dalam memori untuk berbagai permintaan lalu jika ada indeks yang sesuai. Saya akan mengingatkan untuk membuat indeks pembuatan hog-wild karena yang salah juga akan merugikan Anda karena masing-masing memiliki potensi untuk memerlukan pembaruan selama operasi pembaruan baris (Buat-Perbarui-Hapus).
Juga, menggunakan Indeks Hilang DMV memerlukan menggunakan apa yang Anda ketahui tentang aplikasi dan database Anda dan tidak hanya menerapkan setiap indeks yang direkomendasikan. Saya akan memeriksa entri blog Kimberly Tripp tentang indeks di sini . Setelah bagian Indeks, melihat kategori lain mungkin membantu situasi Anda.
Jika pembaruan Java / Hibernate Anda dari 5 tabel dalam satu transaksi melakukan pembaruan melalui beberapa round-trip ke database, maka Anda membiarkan diri Anda terbuka untuk pertengkaran (permintaan CRUD Diblokir). Masalah bertambah buruk jika aplikasi tidak dapat kembali ke database tepat waktu. Saat berada di aplikasi, transaksi aktif terkait dapat memblokir permintaan lain dari pemrosesan dan menyebabkan batas waktu permintaan.
Tambahkan dua masalah di atas bersama-sama dan Anda mulai memiliki kasus sakit kepala kinerja yang buruk.
Mengurangi jumlah perjalanan pulang-pergi basis data dalam konteks satu transaksi akan menjadi hal yang sangat baik untuk dikejar. Mungkin prosedur tersimpan akan membantu.
Sisanya akan membutuhkan pekerjaan untuk mendapatkan skala aplikasi Anda. Anda mungkin juga mempertimbangkan memori, tetapi itu harus terjadi setelah desain dan tinjauan kinerja dilakukan dan perubahan yang diperlukan diimplementasikan sebagai penambahan memori segera akan menutupi masalah Anda.
Ikuti sepenuhnya saran yang telah diuraikan Marian.
Saya akan mengatakan Anda telah menemukan diri Anda tantangan yang luar biasa dan berharap Anda sukses besar!