If I understand your problem correct you want to solve a reasonably large number of very small linear systems?
In that case you have a problem of the type:
A = [k1,0;0,k2;1 1];
A*[x;y] = [s1;s2;s3];
where you want to solve for x and y. Since you have a large number of so small equations to solve, why not calculate the least-square estimator explicitly?
The general advice is not to do this, but you have one 3x2 matrix to "invert" and on the order of 2e6 equations to solve.
With an explicit inverse, A_dagger, you can write the all the solutions for x and y explicitly. If k1 and k2 are numerically known you're set, if you have access to the symbolic toolbox it too lets you solve for A_dagger. This ought to be the most efficient way to solve the problem the way I've understood it.