2010-12-06 62 views
1

Nous avons un serveur d'entreprise coldfusion avec 2 instances. Chaque instance a plus de 200 sources de données vers des bases de données sur un serveur MSSQL. Ce nombre continuera de croître. Maintenant, il semble que les demandes à une seule source de données deviennent plus lentes, même si la base de données est petite. Il est possible que les demandes deviennent plus lentes lorsque CF a plus de sources de données?combien de sources de données peuvent gérer coldfusion

Répondre

2

Les sources de données sont-elles partitionnées pour une raison (par exemple, différents clients/clients, etc.)? S'il s'agit vraiment d'une grosse application avec un grand nombre de bases de données, vous pouvez réduire le nombre de DSN à travers des requêtes inter-bases de données via une seule source de données CF.

Si le CF compte utilise pour se connecter à SQL Server a accès en lecture aux deux bases de données sur le serveur, vous pouvez faire quelque chose comme ceci:

SELECT champ1, champ2, field3 ... DE [databaseA] . [dbo] .Table1 T1 JOIN [base de donnéesB]. [dbo] .Table2 T2 ON ...

Je l'ai fait avec les tables d'état et de pays qui sont partagées entre plusieurs DB. Définissez les autorisations avec soin pour éviter les dommages ou les mises à jour erronées.

+0

Oui, pour chaque client, nous avons une base de données distincte différente. Nous allons essayer d'utiliser la solution de requêtes distribuées, donc nous ne pouvons utiliser qu'une seule source de données. Merci d'avoir répondu. Je vous ferai savoir si cela va fonctionner. – birdy1980

2

Bien sûr, c'est possible, je doute qu'il y ait beaucoup de gens avec ce genre d'expérience, donc nous pourrions juste deviner.

Personnellement, je ne ferais jamais autant de bases de données dans le serveur SQL, et beaucoup de sources de données dans CF. À mon humble avis en utilisant les schémas db serait beaucoup mieux solution, plus facile à maintenir, administrer et ainsi de suite.

Quelle est la situation avec la mémoire? Pourrait arriver qu'une énorme quantité de connexions JDBC étouffe le serveur. Je vérifierais la consommation de mémoire d'abord, les statistiques SQL après pour voir les données à travers la sortie et peut-être même plus tard les paramètres de performance SQL Severs, les paramètres CF pour voir les connexions JDBC possibles, les paramètres réseau et ainsi de suite. Encore une fois, juste deviner et essayer de vous donner un indice où regarder.

2

Il n'y a pas que Coldfusion. Chaque connexion est d'environ 4 Ko et chaque source de données peut utiliser plusieurs connexions. Donc, 200 DSN peuvent égaler 300 ou 400 connexions (ou 800 ou 1000 en cas d'agrégation). Le serveur DB utilise lui-même "tempdb" comme espace de travail pour gérer les demandes. Il étend cet espace de travail pour gérer le trafic - mais il est une ressource partagée dans un sens. Ainsi, une base de données peut avoir un impact sur une autre base de données sur le serveur.

Je voudrais:

  • Vérifiez le nombre total de connexions sur le serveur SQL (perfmon a quelques bons compteurs pour cela)
  • Contrôle de serveur pour avoir une idée du nombre total de connexions sur chaque exemple.
  • Utilisation de la surveillance du réseau pour déterminer la capacité de la connexion réseau sur chaque serveur utilise ...

Bien sûr, il va sans dire que vos bases de données doivent être peaufiné pour effectuer aussi bien (indexé et optimisé - avec un bon schéma et backstopped par un bon code de requête). Créer une solution évolutive nécessite tous ces de ces choses :)

PS - il va sans dire que vous pouvez me contacter pour plus d'aide "formelle". Je serai heureux de discuter de votre problème.

+0

Merci pour les conseils.Le sql-server a en effet beaucoup de connexions (environ 700 déjà) et beaucoup de connexions avec une latence d'environ 200ms. Nous allons donc essayer une autre approche qui n'utiliserait qu'une seule source de données. – birdy1980

+0

Comment ça va? Avez-vous résolu vos problèmes de DB? –