Running SOLR 4 on a seperate application server - alfresco

What is the benefit of running SOLR 4 on a separate application server. We are in the process of evaluating our needs to upgrade to Alfresco 5.0 and I wanted to get people's opinion on the advantages and disadvantages.

If you are running SOLR on separate server you could scale it up easily as and when required. Solr bakes in replication, distribution, rebalancing and fault tolerance out of the box.So, if you have that running in seperate server you could probably even do clustering of SOLR servers to boost performence.

Related

Is it safe to run in-process migrations from an application running on multiple servers?

The FluentMigrator documentation recommends running migrations in-process upon application start, but I don't see any commentary about whether this is safe or recommended when the application is running on multiple servers.
I have always gone the paranoid route of using an out-of-process runner before deploying my applications by triggering it from my build servers. Is that paranoia warranted? Will the Transaction-Per-Migration defaults be enough to guarantee that no migration conflicts can occur on the same codebase trying to run simultaneous upgrade migrations?
At present, this functionality is not yet supported and the documentation has been updated to recommend an out-of-process migration runner when your application is run from multiple processes.
There is currently an issue on Github requesting this feature as well as a workaround specifically for SQL Server 2008+ using sp_getapplock.

Is using XSP4 from Mono behind Nginx as a reverse proxy production proof?

When reading the Mono docs, it says that XSP is not suited for production:
For quickly getting started, get familiar with Mono and ASP.NET, XSP
is the ideal solution. Keep in mind that XSP is a very limited server
and is only useful to get acquainted with ASP.NET and Mono, it only
support HTTP 1.0 and does not provide much extensibility or
configuration.
We are developing a REST API, and are thinking of the following setup:
Linux server
ASP.NET with Mono
Run in XSP4
Nginx as reverse proxy (which can handle load balancing, caching, static files, etc.)
But I'm wondering whether the remarks about XSP not suited for production only apply to the configuration part, or would it also be for performance?
Our performance demands are mainly for large requests, not so much for processing high number of requests (but if necessary, we could scale up with multiple instances of the application in XSP4).

Preferred ways to collect performance counters data for ASP.NET applications

Assume that I have an ASP.NET application running on Windows Server 2008 R2 + IIS 7.5 (or Windows Server 2012 + IIS 8) which works with SQL Server as its data store.
There are previously asked questions on which ASP.NET performance counters to monitor but I couldn't find any good resource for a way of automated collection of performance counters data.
The idea I have in my mind is as follows:
Collect the specified performance counters within a specific interval
(10 seconds, maybe?) and put them to a storage system (A SQL Server
database, Windows Azure Table Storage, Windows Azure Blob Storage, MongoDB, etc.).
The followings are the ways that I consider:
A PowerShell script to achieve the above action. I haven't done that before but I assume there is a way to associate this script with the windows scheduler to automatically invoke within a specific interval.
A Windows Service to achieve the above action.
The big picture is that I will have a dashboard application which will read those data to display graphical output (charts, etc.).
What are your thoughts and previous experiences?
Based on my previous experiences windows services is my last resort. Actually achieving this kind of tasks with powershell is more maintainable and easy for me. Now i am trying to integrate RavenDB for counters and eventlog for having a detailed report about IIS applications.

How does running ASP.Net on Linux compare to the standard Microsoft-centric solution?

I know its possible to develop and host an ASP.Net site on Linux using Mono and Apache, but I'd like to know how well it works and if its worth the hassle? I prefer open source, but for this project I want the quickest, easiest, most reliable solution.
The site I'll be building will be a fairly basic ASP.Net site using MySQL.
I'd like to know if anyone else has experience using Mono in a situation like mine and how the project went. How did it compare to using a Microsoft-centric solution?
I know Mono is still somewhat incomplete, but I'm hoping I won't need the features it lacks.
This question may be a bit "polarizing". Most similar questions seem to have responses from people who are either very pro-Microsoft or pro-Linux. I'm hoping for some unbiased responses, preferably from people with experience using both.
I switched from MS-centric solutions about a year and a half ago and now I'm hosting all of my websites and web projects on Linux/Mono/Apache/MySQL based virtual servers (I was originally using nginx instead of apache, but mono-fastcgi-server was randomly causing thrashing, so I choose apache as a web server). I can summarize my (subjective) experience with this configuration into a few points:
It can take some time to get used to difference between Linux and MS based environments (if you never used Linux before), but I do not regret this decision. What helped me a lot was creating installation and configuration procedures for particular technologies (for example mono parallel environments, apache virtual hosts configurations, dealing with certain issues) which are mostly repeatable and can be automated.
You can still use Visual Studio to develop your applications and then deploy them on Linux machine. If you are using this approach it's a good habit to test your apps regularly on mono for possible incompatibilities.
I deploy web applications via FTP which is probably the easiest way of doing it (well maybe WinSCP is even easier, because you don't have to set up FTP server, but it depends on your preferences).
So far I have run into 2 cases with Mono/Apache where memory leak caused unavailability of the website. This was probably caused by Boehm garbage collector which I was using on old mono installation. I haven't had similar problems with a new sgen GC on recent versions of mono.
What I like the most on mono running on Linux environment compared to MS stuff is that you don't have to click around all the time when doing administrative tasks. Shell is for me unified administrative interface which can speed up things (if you have some practice).
Hosting ASP.NET on mono from my experience is quite easy and fast. i has been host multiple of my project using Mono ASP.NET MVC 1 / 2 using MySQL and PostgreSQL, serve by Apache mod_mono.
Compared with deployment on Windows Server. It quite narrow when using modern linux distribution which already provides all package to deploy mono ASP.NET. the only drawback is you have to make sure your Web Application portable enough in term of IO accessing and only very short learning curve and experience needed to debug and publish your project.
For Deploying our project in Linux. It easy using Version Control (VS) such as Mercurial or Git if u have fully control on the server. If U have more experience using continues integration is more better. I mainly using mercurial so step bellow is the step i usually do, but i think it almost similar for Git:
Install mercurial, and configure mod_wsgi, hgweb.wsgi and hgwerb.config
Init VS repo and publish at hgweb.config and configure hook to update and invoke xbuild to automatically build when u push it
publish the repo (web part) as mono application at mod_mono.conf
So u just need to code at visual studio, commit and push your changes using tortoiseHg without event login to server (set repo url, user and password at your repo hgrc)
Please note that although you can deploy ASP on Linux via things like Mono, if you use a Microsoft ide such as Visual studio, webmatrix, or Visual web developer your licence only allows you to deploy these on Microsoft servers!

SQL Server Express on the same machine, or external shared SQL Server Standard? (for an ASP.NET site)

I'm going to sign-up for a dedicated virtual machine from a renowned MS-centric web hosting company. The virtual machine has 1CPU and 1GB of RAM. I'll be running an ASP.NET website on it - the website is pretty simple (a few tables on the back-end DB) but must be as fast as possible.
For the DB I have two options:
1) Install SQL Server Express on my own virtual machine. The space/ram limitations of this editions are not a problem, because the DB does not stores files and binary data, and thus will remain pretty small.
2) Use the hosting company's shared SQL Server Standard instance, which is in theory installed on a powerful machine.
Which is the best best option? I'd go with (1), but I'm afraid running the web server (iis/asp.net) and SQL Server on the same machine will slow down performances. Thoughts?
If you want to optimize for performance and you haven't very much data, then you should use the shared database and cache your data on the client-side. This is somewhat more complicated and there is a small danger of data-loss (e.g. in case of a power failure), but it's definitely the fastest possible solution.
running the web server (iis/asp.net) and SQL Server on the same machine will slow down performances
It will do this, but if the VM is running at less than 100% capacity it will have no net effect. In IT with choices like this there is a very simple guideline: Keep It Simple. Which is going to be simpler for you to manage (including updates and backups)?

Resources